apiVersion:v1
kind: Pod 
metadata:
  creationTimestamp: null 
  labels:
    component:kube-controller-manager
    tier:control-plane
  name:kube-controller-manager
  namespace: kube-system
spec:
  containers:
  - command:
    - kube-controller-manager
    #--secure-port 安全端口监听所监听的地址#该端口默认为10257
    # 0.0.0.0表示,非安全端口10252监听的地址,1.19版本后移除 
    - --address=0.0.0.0
    #是否允许基干云驱动来为POD分配和设置子网掩码 
    - --allocate-node-cidrs=true
    #认证使用的kubeconfig文件,里面需包含认证信息
    - --authentication-kubeconfig=/etc/kubernetes/controller-manager.conf
    # 鉴权使用的kubeconfig文件,里面需包含认证信息。
    - --authorization-kubeconfig=/etc/kubernetes/controller-manager.conf
    #本机安全端口开启的地址
    - --bind-address=127.0.0.1
    # 用干对带有证书的请求,若证书由该ca签发,则通过证书中的CN对应的标识进行身份认证.
    - --client-ca-file=/etc/kubernetes/pki/ca.crt
    #集群中pods的CIDR范围
    - --cluster-cidr=192.168.0.0/16
    # 包含PEM编码格式的X509 CA证书文件名,该证书用来发放集群范围的证书 
    - --cluster-signing-cert-file=/etc/kubernetes/pki/ca.crt
    # 该私钥用来对集群范围证书签名
    - --cluster-signing-key-file=/etc/kubernetes/pki/ca.key
    # 要启用的控制器列表,*表示启用所有默认启用的控制器,bootstrapsigner和tokencleaner为默认禁用的控制器 
    - --controllers=*,bootstrapsigner,tokencleaner
    # 证书有效期由该参数决定,87600为10年
    # 1.19之后为--cluster-signing-duration,当kubelet请求其节点的证书签名时,controller-manager会签署证书
    - --experimental-clusterCsigning-duration=87600h
    # 包含主控节点位置及鉴权凭据信息
    - --kubeconfig=/etc/kubernetes/controller-manager.conf
    # 默认值为true,在执行选主循环前,启动leader选举客户端并尝试获得leader身份,该参数启用后,会自动启动如下参数
    # --leader-elect-lease-duration(default: 15s),非leader节点当探测到leader身份需要变化时,需要等待的时间
    # leader在被替代前,可停止的最长时间
    # -- leader-elect-renew-deadline(default:10s),leader进行renew续约的时间间隔,需小于或等于租期时长(lease duration)
    # --leader-elect-resource-lock(default:leases),leader选举期间用户锁定的资源对象类型,包括endpointsleases, configmapleases和leases
    # --leader-elect-resource-name(default:kube-controller-manager), leader选举期间,用来执行锁操作的资源对象名
    # --leader-elect-resource-namespace(default:kube-system),选举期间,执行锁操作的资源对象的namespace
    # --leader-elect-retry-period(default:2s),尝试获得leader身份时,lease请求成为leader的时间间隔
    - --leader-elect=true
    # 节点CIDR掩码长度,IPV4默认为24,IPV6默认为64
    - --node-cidr-mask-size=24
    # 该ca用于检查请求的客户端证书
    - --requestheader-client-ca-file=/etc/kubernetes/pki/front-proxy-ca.crt
    # 若指定该参数,ca证书会被包含在serviceaccount的token secret中(type为kubernetes.io/service-account-token的secret, Opaque/dockercfg无该文件)
    # 该ca.crt会根据应用配置,挂载进容器内部用于请求认证,所有sa-token类型的secret中都存在该ca.crt文件
    - --root-ca-file=/etc/kubernetes/pki/ca.crt
    # 用于对serviceaccount中的token进行签名
    - --service-account-private-key-file=/etc/kubernetes/pki/sa.key
    # 为true时,为每个controller配置单独的sa认证
    # 通过kubectl get sa -nkube-system可以查看到,每个controller存在一个<controllerName>-controller的sa
    - --use-service-account-credentials=true
    image: k8s.io/kube-controller-manager:v1.15.12
    imagePullPolicy: IfNotPresent
    livenessProbe:
      failureThreshold: 8
      httpGet:
        host: 0.0.0.0
        path: /healthz
        port: 10252
        scheme: HTTP
      initialDelaySeconds: 15
      timeoutSeconds: 15
    name: kube-controller-manager
    resources:
      requests:
        cpu: 200m
    volumeMounts:
    - mountPath: /etc/ssl/certs
      name: ca-certs
      readOnly: true
    - mountPath: /etc/pki
      name: etc-pki
      readOnly: true    
    - mountPath: /etc/kubernetes/pki
      name: k8s-certs
      readOnly: true    
    - mountPath: /etc/kubernetes/controller-manager.conf
      name: kubeconfig
      readOnly: true    
  hostNetwork: true
  # k8s会自动生成两个priorityclass用于保证关键组件优先级,当节点需要驱逐pod时,优先驱逐低优先级pod
  # 自动创建的两个classname: system-cluster-critical和system-node-critical,前者优先级低于后者,两个类描述如下:
  # system-cluster-critical: Used for system critical ppods that must run in the cluster, but can be moved to another node if necessary.
  # system-node-critical: Used for system critical pods that must not be moved from their current
  priorityClassName: system-cluster-critical
  volumes:
  - hostPath:
      path: /etc/ssl/certs
      type: DirectoryOrCreate
    name: ca-certs
  - hostPath:
      path: /etc/pki
      type: DirectoryOrCreate
    name: etc-pki
  - hostPath:
      path: /etc/kubernetes/pki
      type: DirectoryOrCreate
    name: k8s-certs  
  - hostPath:
      path: /etc/kubernetes/controller-manager.conf
      type: FileOrCreate
    name: kubeconfig  
 posted on 2022-07-20 21:16  shelterCJJ  阅读(53)  评论(0)    收藏  举报