附加组件管理器(Addon-manager)是运行在 Kubernetes 集群 Master 节点、用来管理附加组件(Addons)的服务。它管理着 $ADDON_PATH
(默认是 /etc/kubernetes/addons/
)目录中的所有扩展,保证它们始终运行在期望状态。
Addon-manager 支持两种标签
对于带有 addonmanager.kubernetes.io/mode=Reconcile
标签的扩展,无法通过 API 来修改,即
如果通过 API 修改了,则会自动回滚到 /etc/kubernetes/addons/
中的配置
如果通过 API 删除了,则会通过 /etc/kubernetes/addons/
中的配置自动重新创建
如果从 /etc/kubernetes/addons/
中删除配置,则 Kubernetes 资源也会删除
也就是说只能通过修改 /etc/kubernetes/addons/
中的配置来修改
对于带有 addonmanager.kubernetes.io/mode=EnsureExists
标签到扩展,仅检查扩展是否存在而不检查配置是否更改,即
可以通过 API 来修改配置,不会自动回滚
如果通过 API 删除了,则会通过 /etc/kubernetes/addons/
中的配置自动重新创建
如果从 /etc/kubernetes/addons/
中删除配置,则 Kubernetes 资源不会删除
将下面的 YAML 存入所有 Master 节点的 /etc/kubernetes/manifests/kube-addon-manager.yaml
文件中:
apiVersion: v1kind: Podmetadata:name: kube-addon-managernamespace: kube-systemannotations:scheduler.alpha.kubernetes.io/critical-pod: ''seccomp.security.alpha.kubernetes.io/pod: 'docker/default'labels:component: kube-addon-managerspec:hostNetwork: truecontainers:- name: kube-addon-manager# When updating version also bump it in:# - test/kubemark/resources/manifests/kube-addon-manager.yamlimage: k8s.gcr.io/kube-addon-manager:v8.7command:- /bin/bash- -c- exec /opt/kube-addons.sh 1>>/var/log/kube-addon-manager.log 2>&1resources:requests:cpu: 3mmemory: 50MivolumeMounts:- mountPath: /etc/kubernetes/name: addonsreadOnly: true- mountPath: /var/logname: varlogreadOnly: falseenv:- name: KUBECTL_EXTRA_PRUNE_WHITELISTvalue: {{kubectl_extra_prune_whitelist}}volumes:- hostPath:path: /etc/kubernetes/name: addons- hostPath:path: /var/logname: varlog
Addon-manager 的源码维护在 https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/addon-manager。