Kubernetes addon-manager

转载:https://www.cnblogs.com/vincenshen/p/9641552.html

Addon-manager

附加组件管理器(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 文件中:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    apiVersion: v1
    kind: Pod
    metadata:
    name: kube-addon-manager
    namespace: kube-system
    annotations:
    scheduler.alpha.kubernetes.io/critical-pod: ''
    seccomp.security.alpha.kubernetes.io/pod: 'docker/default'
    labels:
    component: kube-addon-manager
    spec:
    hostNetwork: true
    containers:
    - name: kube-addon-manager
    image: k8s.gcr.io/kube-addon-manager:v8.6
    command:
    - /bin/bash
    - -c
    - exec /opt/kube-addons.sh 1>>/var/log/kube-addon-manager.log 2>&1
    resources:
    requests:
    cpu: 5m
    memory: 50Mi
    volumeMounts:
    - mountPath: /etc/kubernetes/
    name: addons
    readOnly: true
    - mountPath: /var/log
    name: varlog
    readOnly: false
    volumes:
    - hostPath:
    path: /etc/kubernetes/
    name: addons
    - hostPath:
    path: /var/log
    name: varlog

源码
Addon-manager 的源码维护在 https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/addon-manager。