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