kube-controller-manager启动参数详解
kube-controller-manager [flags]
Debugging flags
参数 说明
--contention-profiling 启用了 profiling,则启用锁争用性分析
--profiling 开启profilling,通过web接口host:port/debug/pprof/分析性能
Generic flags
参数 说明
--allocate-node-cidrs 是否应在云提供商上分配和设置Pod的CIDR
--cidr-allocator-type string CIDR分配器的类型 (default “RangeAllocator”)
--cloud-config string 云提供商配置文件路径,空代表没有配置文件
--cloud-provider string 云提供商,空代表没有云提供商
--cluster-cidr string 集群中Pod的CIDR范围,要求–allocate-node-cidrs为true
--cluster-name string 集群的实例前缀(default “kubernetes”)
--configure-cloud-routes 是否在云提供商上配置allocate-node-cidrs分配的CIDR(default true)
--controller-start-interval duration 启动controller manager的间隔时间
--controllers strings 需要开启的controller列表,*代表开启所有(默认),‘foo’代表开启foo controller,‘-foo’代表禁止foo controller。
所有的controller如下:
attachdetach, bootstrapsigner, clusterrole-aggregation,cronjob, csrapproving, csrcleaner, csrsigning, daemonset,deployment, disruption, endpoint, garbagecollector,horizontalpodautoscaling, job, namespace, nodeipam, nodelifecycle, persistentvolume-binder, persistentvolume-expander, podgc, pv-protection,pvc-protection, replicaset, replicationcontroller,resourcequota, route, service, serviceaccount, serviceaccount-token,statefulset, tokencleaner, ttl,ttl-after-finished
--feature-gates mapStringBool key = value对,用于试验
--kube-api-burst int32 发送到kube-apiserver每秒请求量 (default 100)
--kube-api-content-type string 发送到kube-apiserver请求内容类型(default “application/vnd.kubernetes.protobuf”)
--kube-api-qps float32 与kube-apiserver通信的qps(default 50)
--leader-elect 多个master情况设置为true保证高可用,进行leader选举
--leader-elect-lease-duration duration 当leader-elect设置为true生效,选举过程中非leader候选等待选举的时间间隔(default 15s)
--leader-elect-renew-deadline duration eader选举过程中在停止leading,再次renew时间间隔,小于或者等于leader-elect-lease-duration duration,也是leader-elect设置为true生效(default 10s)
--leader-elect-retry-period duration 当leader-elect设置为true生效,获取leader或者重新选举的等待间隔(default 2s)
--min-resync-period duration 重新同步周期,在 [MinResyncPeriod-2 * MinResyncPeriod]间取随机值(default 12h0m0s)
--node-monitor-period duration NodeController同步NodeStatus的时间间隔(default 5s)
--route-reconciliation-period duration 协调由云提供商为节点创建的路由的时间间隔 (default 10s)
--use-service-account-credentials 设置true为每个控制器使用单个service account
Service controller flags
参数 说明
--concurrent-service-syncs int32 允许同时同步的 service 数量。 数字越大=服务管理响应越快,但消耗更多 CPU 和网络资源
Secure serving flags
参数 说明
--bind-address ip 监听–secure-port端口的IP地址(default 0.0.0.0)
--cert-dir string TLS证书所在的目录。如果提供了–tls-cert-file和–tls-private-key-file,则将忽略此标志(default “/var/run/kubernetes”)
--http2-max-streams-per-connection int api server 提供给 client 的HTTP / 2最大 stream 连接数。0 用golang的默认值
--secure-port int 使用身份验证和授权提供服务的HTTPS端口。0禁用HTTPS
--tls-cert-file string 文件包含HTTPS的默认x509证书的文件。 (如果有CA证书,在服务器证书之后级联)。如果启用了HTTPS服务,但是 --tls-cert-file和–tls-private-key-file 未设置,则会为公共地址生成自签名证书和密钥,并将其保存到–cert-dir的目录中
--tls-cipher-suites strings 逗号分隔的cipher suites列表。如果省略则使用默认的Go cipher suites
--tls-min-version string 支持最低TLS版本。 主要有:VersionTLS10,VersionTLS11,VersionTLS12
--tls-private-key-file string 文件包括与 --tls-cert-file 匹配的默认x509私钥
--tls-sni-cert-key namedCertKey x509证书和私钥对的文件路径(default []) Examples: “example.crt,example.key” or “foo.crt,foo.key:*.foo.com,foo.com”
Insecure serving flags
参数 说明
--address ip 为不安全端口提供服务的IP地址(对于所有IPv4设置为0.0.0.0)接口和::所有IPv6接口)。(默认值0.0.0.0)(已弃用:参见 --bind-address代替。)
--port int 为不安全、未经身份验证的访问提供服务的端口。设置为0禁用。(默认10252)(弃用:参见 --secure-port)
Authentication flags
参数 说明
--authentication-kubeconfig string kubeconfig文件指向有权力创建tokenaccessreviews.authentication.k8s.io的核心kubernetes server,如果未设置所有的token请求被视为匿名的,在集群中也不查找client CA
--authentication-skip-lookup 如果设置false,authentication-kubeconfig用来在集群中查找缺失的authentication配置
--authentication-token-webhook-cache-ttl duration 来自webhook token验证器的缓存响应时间 (default 10s)
--client-ca-file string 如果设置任何请求必须提供其中一个客户端证书签名。则用其中的 Common Name 作为请求的用户名验证
--requestheader-allowed-names strings 客户端证书通用名称列表,允许在–requestheader-username-headers指定的标头中提供用户名。如果为空,则允–requestheader-client-ca-file中验证的任何客户端证书。
--requestheader-client-ca-file string 根证书包,用于在信任由–requestheader-username-headers指定的头文件中的用户名之前对传入请求验证客户端证书。警告:通常不要依赖于对传入请求已经进行的授权。
--requestheader-extra-headers-prefix strings 要检查的请求头前缀列表。建议X-Remote-Extra-。(默认[x-remote-extra -])
--requestheader-group-headers strings 要检查组的请求标头列表。建议X-Remote-Group。(默认[x-remote-group])
--requestheader-username-headers strings 检查用户名的请求头列表。X-Remote-User是常用的。(默认[x-remote-user])
Authorization flags
参数 说明
--authorization-always-allow-paths strings 授权期间要跳过的HTTP路径列表,这些路径是经过授权、无须与’核心’kubernetes服务通信(default [/healthz])
--authorization-kubeconfig string kubeconfig指向核心的kubernetes服务拥有足够的权力来创建subjectaccessreviews.authorization.k8s.io,也是可选项,如果未设置,则所有请求将被禁止
--authorization-webhook-cache-authorized-ttl duration 从webhook授权器对于cache验证响应时间(default 10s)
--authorization-webhook-cache-unauthorized-ttl duration 从webhook授权器对于cache验证未响应时间(default 10s)
Attachdetach controller flags
参数 说明
--attach-detach-reconcile-sync-period duration 在volume attach detach调整同步等待时间,时间间隔必须大于1s,增加默认值可能导致volume与pod不匹配(default 1m0s)
--disable-attach-detach-reconcile-sync 禁止volume attach detach 调整同步,禁用此功能可能会导致卷与 pod 不匹配
Csrsigning controller flags
参数 说明
--cluster-signing-cert-file string 包含peme编码的X509 CA证书的文件名,用于发出集群范围的证书(默认为“/etc/kubernetes/ CA / CA .pem”)
--cluster-signing-key-file string 包含pemm编码的RSA或ECDSA私有密钥的文件名,用于对集群范围的证书进行签名(默认为“/etc/kubernetes/ca/ca.key”)
--experimental-cluster-signing-duration duration 签署证书的期限将会被给出。(默认8760h0m0s)
Deployment controller flags
参数 说明
--concurrent-deployment-syncs int32 允许同时同步的deployment对象的数量,部署数量越大需要的CPU网络load也多(default 5)
--deployment-controller-sync-period duration 同步deployment的周期(default 30s)
Endpoint controller flags
参数 说明
--concurrent-endpoint-syncs int32 同时同步endpoint的数量,也是数量越多需要越多的CPU和network(default 5)
Garbagecollector controller flags
参数 说明
--concurrent-gc-syncs int32 允许同时同步的garbage collector workers数量(default 20)
--enable-garbage-collector 启用通用垃圾收集器,必须与kube-apiserver的相应参数一起使用(default true)
Horizontalpodautoscaling controller flags
参数 说明
--horizontal-pod-autoscaler-cpu-initialization-period duration 当CPU samples略过,在pod启动之后的周期(default 5m0s)
--horizontal-pod-autoscaler-downscale-stabilization duration autoscaler将向后查看并且不会缩小到低于其在此期间提出的任何建议的时间段(default 5m0s)
--horizontal-pod-autoscaler-initial-readiness-delay duration pod启动后的一段时间,在此期间战备状态的变化将被视为初始战备状态(默认为30秒)
--horizontal-pod-autoscaler-sync-period duration The period for syncing the number of pods in horizontal pod autoscaler. (default 15s)
--horizontal-pod-autoscaler-tolerance float 水平pod自动调度器所需的实际度量比的最小变化(从1.0开始)需要考虑缩放。(default 0.1)
Namespace controller flags
参数 说明
--concurrent-namespace-syncs int32 允许并发同步的名称空间对象的数量。更大的数字=响应更快的名称空间终止,但是更多的CPU(和网络)负载(默认为10)
--namespace-sync-period duration 同步namespace生命周期更新的周期(default 5m0s)
Nodeipam controller flags
参数 说明
--node-cidr-mask-size int32 集群中节点子网掩码打小(default 24)
--service-cluster-ip-range string 集群service的cidr范围,需要–allocate-node-cidrs设置为true
Nodelifecycle controller flags
参数 说明
--enable-taint-manager 如果设置为true则开启NoExecute Taints,将驱逐所有节点上(拥有这种污点的节点)不容忍运行pod (default true)
--large-cluster-size-threshold int32 NodeController出于驱逐逻辑目的而将集群视为大节点的节点数量。对于这种大小或更小的集群(默认为50),–secondary-node-eviction-rate被隐式覆盖为0
--node-eviction-rate float32 当zone健康node失败情况,删除节点上的pod的速率 (default 0.1)
--node-monitor-grace-period duration 在标记节点不健康之前,允许运行节点不响应的时间,必须是n倍的kubelet’s nodeStatusUpdateFrequency,N意味着kubelet报告node状态重试的次数(default 40s)
--node-startup-grace-period duration 在标记节点不健康之前,允许开始节点不响应的时间 (default 1m0s)
--pod-eviction-timeout duration 在失败的节点上删除pod的宽限时间 (default 5m0s)
--secondary-node-eviction-rate float32 当zone不健康node失败情况,删除节点上的pod的速率,如果集群大小小于 large-cluster-size-threshold,则隐式地将设置为0。(default 0.01)
--unhealthy-zone-threshold float32 not ready 节点(至少3个)的比例达到该值时,将 Zone 标记为不健康 (default 0.55)
Persistentvolume-binder controller flags
参数 说明
--enable-dynamic-provisioning 为支持它的环境启用动态配置 (default true)
--enable-hostpath-provisioner 当没有云提供商运行时开启host path pv配置,这主要适合测试以及开发配置features,host path配置不支持多点集群
--flex-volume-plugin-dir string 第三方插件路径 (default “/usr/libexec/kubernetes/kubelet-plugins/volume/exec/”)
--pv-recycler-increment-timeout-nfs int32 NFS scrubber pod添加每Gi到ActiveDeadlineSeconds的时间增量(default 30)
--pv-recycler-minimum-timeout-hostpath int32 对于HostPath Recycler pod的最小ActiveDeadlineSeconds,仅使用于测试于开发,不使用于多几点集群 (default 60)
--pv-recycler-minimum-timeout-nfs int32 对于NFS Recycler pod的最小ActiveDeadlineSeconds (default 300)
--pv-recycler-pod-template-filepath-hostpath string 对于hostpaht持久卷重使用定义的模板路径,仅使用于测试于开发,不使用于多几点集群
--pv-recycler-timeout-increment-hostpath int32 对于HostPath scrubber pod每增加Gi到ActiveDeadlineSeconds的时间增量,仅使用于测试于开发,不使用于多几点集群 (default 30)
--pvclaimbinder-sync-period duration 同步pv以及pvc的周期 (default 15s)
Podgc controller flags
参数 说明
--terminated-pod-gc-threshold int32 当终止的pod达到该值时,pod garbage collector开始删除终止pod,如果设置<=0,关闭pod garbage collector (default 12500)
Replicaset controller flags
参数 说明
--concurrent-replicaset-syncs int32 允许同时同步的rs数量,Larger number = more responsive replica management, but more CPU (and network) load (default 5)
Replicationcontroller flags
参数 说明
--concurrent_rc_syncs int32 允许并发同步的复制控制器的数目。更大的数字=响应更快的副本管理,但是更多的CPU(和网络)负载(默认5)
Resourcequota controller flags
参数 说明
--concurrent-resource-quota-syncs int32 允许并发同步的资源配额数量。更大的数字=响应性更好的配额管理,但是更多的CPU(和网络)负载(默认5)
--resource-quota-sync-period duration 在系统中同步配额使用状态的周期 (default 5m0s)
Serviceaccount controller flags
参数 说明
--concurrent-serviceaccount-token-syncs int32 允许并发同步的服务帐户令牌对象的数量。更大的数字=响应性更好的令牌生成,但是更多的CPU(和网络)负载(默认5)
--root-ca-file string 根CA 证书文件路径,如果设置的话将被用于 Service Account 的 token secret 中
--service-account-private-key-file string 包含用于对服务帐户令牌签名的pemm编码的私有RSA或ECDSA密钥的文件名
Ttl-after-finished controller flags
参数 说明
--concurrent-ttl-after-finished-syncs int32 允许并发同步的ttl后完成的控制器工作人员的数量。(默认5)
Misc flags
参数 说明
--insecure-experimental-approve-all-kubelet-csrs-for-group string This flag does nothing.
--kubeconfig string kubeconfig文件路径,带有验证以及master信息
--master string kubernetes api server的地址,将会覆盖kubeconfig设置的值
三、kube-controller-manager安装部署
注意:以下kube-schedule安装部署是在k8s的etcd、apiserver组件已部署后的前提下部署验证的;
下载地址:https://github.com/kubernetes/kubernetes (包含了k8s所必须的组件,如kube-apiserver、kubelet、kube-scheduler、kube-controller-manager等等)
1.在windows下进入https://github.com/kubernetes/kubernetes后,点击如CHANGELOG-1.16.md文件查看对应的版本(1.16版本)和下载的文件;
2.选择Server Binaries的kubernetes-server-linux-amd64.tar.gz下载;
3.在windows下载后通过lrzsz工具执行rz上传到linux上(linux上无法直接通过wget https://dl.k8s.io/v1.16.4/kubernetes.tar.gz下载);
4.解压后生成kubernetes目录,把/kubernetes/service/bin/下的kube-controller-manager复制到/opt/kubernetes/bin下;
创建controller manager配置文件kube-controller-manager
cat > /opt/kubernetes/cfg/kube-controller-manager <
--v=4 \
--master=127.0.0.1:8080 \
--leader-elect=true \
--address=127.0.0.1 \
--service-cluster-ip-range=10.0.0.0/24 \
--cluster-name=kubernetes \
--cluster-signing-cert-file=/opt/kubernetes/ssl/ca.pem \
--cluster-signing-key-file=/opt/kubernetes/ssl/ca-key.pem \
--root-ca-file=/opt/kubernetes/ssl/ca.pem \
--service-account-private-key-file=/opt/kubernetes/ssl/ca-key.pem"
EOF
systemd管理controller manager,创建kube-controller-manager服务文件
cat > /usr/lib/systemd/system/kube-controller-manager.service <
Description=Kubernetes Controller Manager
Documentation=https://github.com/kubernetes/kubernetes
[Service]
EnvironmentFile=-/opt/kubernetes/cfg/kube-controller-manager
ExecStart=/opt/kubernetes/bin/kube-controller-manager $KUBE_CONTROLLER_MANAGER_OPTS
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
启动kube-controller-manager服务
systemctl daemon-reload
systemctl enable kube-scheduler
systemctl start kube-scheduler
验证kube-controller-manager服务是否启动成功
systemctl status kube-controller-manager
若失败可通过查看服务日志定位问题:
journalctl _PID=
执行命令查看scheduler组件是否健康正常
kubectl get cs controller-manager -o yaml