k 8 sとconfigmap-安利configmap-reloadコンポーネント
前言
kubernetesクラスタ内で、ConfigMapがpod内にvolume形式でマウントされると、ConfigMapが更新され、kubernetesはpod内にマウントされたファイルの内容を自動的に同期します.もちろん、変更がすぐに発効するわけではありません.約10 S後に発効します.実際の本番使用例では、hot reload機能を備えている場合は、プロファイルの変更を監視するスクリプトを追加し、reload対応サービスを追加できます.例えばprometheus.今日はconfigmap-reloadコンポーネントを紹介します.
configmap-reload
configmap-reloadはrust言語で実現され、主な業務容器であるsidercarは、主にk 8 sにおけるconfigmapの変化を傍受し、変化を待ってhttpインタフェースを通じて主業務に通知する.リソースの消費量は、より小さくなります.具体的には以下の通りです.
入力パラメータはconfigmap-reload-hで取得できます.
例:
まとめ
dockerhubのミラーを直接引き出すことができます.
もちろん倉庫にはDockerfileファイルが用意されていますが、
みんなは自分でミラーリングをして、自分の倉庫にpushすることができます.
kubernetesクラスタ内で、ConfigMapがpod内にvolume形式でマウントされると、ConfigMapが更新され、kubernetesはpod内にマウントされたファイルの内容を自動的に同期します.もちろん、変更がすぐに発効するわけではありません.約10 S後に発効します.実際の本番使用例では、hot reload機能を備えている場合は、プロファイルの変更を監視するスクリプトを追加し、reload対応サービスを追加できます.例えばprometheus.今日はconfigmap-reloadコンポーネントを紹介します.
configmap-reload
configmap-reloadはrust言語で実現され、主な業務容器であるsidercarは、主にk 8 sにおけるconfigmapの変化を傍受し、変化を待ってhttpインタフェースを通じて主業務に通知する.リソースの消費量は、より小さくなります.具体的には以下の通りです.
[root@ip-172-xx-xx-10 src]# kubectl top pods
NAME CPU(cores) MEMORY(bytes)
configmap-reload-6bbbb8b45b-7zg2x 0m 1Mi
入力パラメータはconfigmap-reload-hで取得できます.
configmap-reload 0.1.0
gaohj
USAGE:
configmap-reload [OPTIONS]
FLAGS:
-h, --help Prints help information
-V, --version Prints version information
OPTIONS:
-l, --log_level log level: error|warn|info|debug|trace [default: info]
-p, --path the config map volume directory to watch for updates [default: ]
-m, --webhook_method
the HTTP method url to use to send the webhook: GET|POST [default: POST]
-c, --webhook_status_code
the HTTP status code indicating successful triggering of reload [default: 200]
-u, --webhook_url the HTTP method url to use to send the webhook [default: ]
例:
---
apiVersion: v1
kind: ConfigMap
metadata:
labels:
app: configmap-reload
name: configmap-reload-cm
data:
test.ini: |-
key: a
---
kind: Deployment
apiVersion: apps/v1
metadata:
name: configmap-reload
labels:
app: configmap-reload
spec:
replicas: 1
selector:
matchLabels:
app: configmap-reload
template:
metadata:
labels:
app: configmap-reload
spec:
volumes:
- name: config
configMap:
name: configmap-reload-cm
containers:
- name: configmap-reload
image: 'iyacontrol/configmap-reload:v0.1'
command:
- configmap-reload
args:
- -l
- debug
- -p
- /etc/test/
- -c
- '200'
- -u
- https://www.baidu.com
volumeMounts:
- name: config
mountPath: /etc/test/
imagePullPolicy: Always
---
まとめ
dockerhubのミラーを直接引き出すことができます.
もちろん倉庫にはDockerfileファイルが用意されていますが、
FROM clux/muslrust:stable as builder
WORKDIR /configmap-reload
COPY ./ ./
ARG use_mirror
RUN if [ $use_mirror ]; then \
mkdir -p $HOME/.cargo; \
mv -f ./docker/cargo_config $HOME/.cargo/config; \
fi
RUN cargo build --release
#####################################
FROM alpine:latest as prod
RUN apk add --no-cache ca-certificates
COPY --from=0 /configmap-reload/target/x86_64-unknown-linux-musl/release/configmap-reload /usr/bin/configmap-reload
RUN chmod +x /usr/bin/configmap-reload
ENTRYPOINT ["configmap-reload"]
みんなは自分でミラーリングをして、自分の倉庫にpushすることができます.