kube-controller-manager
Kubernetes 控制器管理器是一个守护过程,内嵌随 Kubernetes 一起公布的外围管制回路。在机器人和自动化的利用中,管制回路是一个永不休止的循环,用于调节零碎状态。在 Kubernetes 中,每个控制器是一个管制回路,通过 API 服务器监督集群的共享状态,并尝试进行更改以将以后状态转为冀望状态。目前,Kubernetes 自带的控制器例子包含正本控制器、节点控制器、命名空间控制器和服务账号控制器等。
cat > /usr/lib/systemd/system/kube-controller-manager.service << EOF
[Unit]
Description=Kubernetes Controller Manager
Documentation=https://github.com/kubernetes/kubernetes
After=network.target
[Service]
ExecStart=/usr/local/bin/kube-controller-manager \
--v=2 \
--logtostderr=true \
--address=127.0.0.1 \
--root-ca-file=/etc/kubernetes/pki/ca.pem \
--cluster-signing-cert-file=/etc/kubernetes/pki/ca.pem \
--cluster-signing-key-file=/etc/kubernetes/pki/ca-key.pem \
--service-account-private-key-file=/etc/kubernetes/pki/sa.key \
--kubeconfig=/etc/kubernetes/controller-manager.kubeconfig \
--leader-elect=true \
--use-service-account-credentials=true \
--node-monitor-grace-period=40s \
--node-monitor-period=5s \
--pod-eviction-timeout=2m0s \
--controllers=*,bootstrapsigner,tokencleaner \
--allocate-node-cidrs=true \
--cluster-cidr=172.16.0.0/12 \
--requestheader-client-ca-file=/etc/kubernetes/pki/front-proxy-ca.pem \
--node-cidr-mask-size=24
Restart=always
RestartSec=10s
[Install]
WantedBy=multi-user.target
EOF
-v, --v int
日志级别具体水平取值。--logtostderr 默认值:true
将日志写出到规范谬误输入(stderr)而不是写入到日志文件。--root-ca-file string
如果此标记非空,则在服务账号的令牌 Secret 中会蕴含此根证书机构。所指定标记值必须是一个非法的 PEM 编码的 CA 证书包。--cluster-signing-cert-file string
蕴含 PEM 编码格局的 X509 CA 证书的文件名。该证书用来发放集群范畴的证书。如果设置了此标记,则不能指定更具体的 --cluster-signing-* 标记。--cluster-signing-key-file string
蕴含 PEM 编码的 RSA 或 ECDSA 私钥的文件名。该私钥用来对集群范畴证书签名。若指定了此选项,则不可再设置 --cluster-signing-* 参数。--kubeconfig string
指向 kubeconfig 文件的门路。该文件中蕴含主控节点地位以及鉴权凭据信息。--leader-elect 默认值:true
在执行主循环之前,启动领导选举(Leader Election)客户端,并尝试取得领导者身份。在运行多正本组件时启用此标记有助于进步可用性。--use-service-account-credentials
当此标记为 true 时,为每个控制器独自应用服务账号凭据。--node-monitor-grace-period duration 默认值:40s
在将一个 Node 标记为不衰弱之前容许其无响应的时长下限。必须比 kubelet 的 nodeStatusUpdateFrequency 大 N 倍;这里 N 指的是 kubelet 发送节点状态的重试次数。--node-monitor-period duration 默认值:5s
节点控制器对节点状态进行同步的反复周期。--pod-eviction-timeout duration 默认值:5m0s
在生效的节点上删除 Pods 时为其预留的宽限期。--controllers strings 默认值:[*]
要启用的控制器列表。\* 示意启用所有默认启用的控制器;foo 启用名为 foo 的控制器;-foo 示意禁用名为 foo 的控制器。控制器的选集:attachdetach、bootstrapsigner、cloud-node-lifecycle、clusterrole-aggregation、cronjob、csrapproving、csrcleaner、csrsigning、daemonset、deployment、disruption、endpoint、endpointslice、endpointslicemirroring、ephemeral-volume、garbagecollector、horizontalpodautoscaling、job、namespace、nodeipam、nodelifecycle、persistentvolume-binder、persistentvolume-expander、podgc、pv-protection、pvc-protection、replicaset、replicationcontroller、resourcequota、root-ca-cert-publisher、route、service、serviceaccount、serviceaccount-token、statefulset、tokencleaner、ttl、ttl-after-finished
默认禁用的控制器有:bootstrapsigner 和 tokencleaner。--allocate-node-cidrs
基于云驱动来为 Pod 调配和设置子网掩码。--requestheader-client-ca-file string
根证书包文件名。在信赖通过 --requestheader-username-headers 所指定的任何用户名之前,要应用这里的证书来查看申请中的客户证书。正告:个别不要依赖对申请所作的鉴权后果。--node-cidr-mask-size int32
集群中节点 CIDR 的掩码长度。对 IPv4 而言默认为 24;对 IPv6 而言默认为 64。--node-cidr-mask-size-ipv4 int32
在双堆栈(同时反对 IPv4 和 IPv6)的集群中,节点 IPV4 CIDR 掩码长度。默认为 24。--node-cidr-mask-size-ipv6 int32
在双堆栈(同时反对 IPv4 和 IPv6)的集群中,节点 IPv6 CIDR 掩码长度。默认为 64。
kube-scheduler
Kubernetes 调度器是一个管制面过程,负责将 Pods 指派到节点上。调度器基于束缚和可用资源为调度队列中每个 Pod 确定其可非法搁置的节点。调度器之后对所有非法的节点进行排序,将 Pod 绑定到一个适合的节点。在同一个集群中能够应用多个不同的调度器;kube-scheduler 是其参考实现。参阅调度 以取得对于调度和 kube-scheduler 组件的更多信息。
cat > /usr/lib/systemd/system/kube-scheduler.service << EOF
[Unit]
Description=Kubernetes Scheduler
Documentation=https://github.com/kubernetes/kubernetes
After=network.target
[Service]
ExecStart=/usr/local/bin/kube-scheduler \
--v=2 \
--logtostderr=true \
--address=127.0.0.1 \
--leader-elect=true \
--kubeconfig=/etc/kubernetes/scheduler.kubeconfig
Restart=always
RestartSec=10s
[Install]
WantedBy=multi-user.target
--logtostderr 默认值:true
日志记录到规范谬误输入而不是文件。--leader-elect 默认值:true
在执行主循环之前,开始领导者选举并选出领导者。应用多副原本实现高可用性时,可启用此标记。--kubeconfig string
已弃用: 蕴含鉴权和主节点地位信息的 kubeconfig 文件的门路。如果 --config 指定了一个配置文件,那么这个参数将被疏忽。
kubelet
kubelet 是在每个 Node 节点上运行的次要“节点代理”。它能够应用以下之一向 apiserver 注册:主机名(hostname);笼罩主机名的参数;某云驱动的特定逻辑。
kubelet 是基于 PodSpec 来工作的。每个 PodSpec 是一个形容 Pod 的 YAML 或 JSON 对象。kubelet 承受通过各种机制(次要是通过 apiserver)提供的一组 PodSpec,并确保这些 PodSpec 中形容的容器处于运行状态且运行状况良好。kubelet 不治理不是由 Kubernetes 创立的容器。
除了来自 apiserver 的 PodSpec 之外,还能够通过以下三种形式将容器清单(manifest)提供给 kubelet。
文件(File):利用命令行参数传递门路。kubelet 周期性地监督此门路下的文件是否有更新。监督周期默认为 20s,且可通过参数进行配置。
HTTP 端点(HTTP endpoint):利用命令行参数指定 HTTP 端点。此端点的监督周期默认为 20 秒,也能够应用参数进行配置。
HTTP 服务器(HTTP server):kubelet 还能够侦听 HTTP 并响应简略的 API(目前没有残缺标准)来提交新的清单。
cat > /etc/systemd/system/kubelet.service.d/10-kubelet.conf << EOF
[Service]
Environment="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.kubeconfig --kubeconfig=/etc/kubernetes/kubelet.kubeconfig"
Environment="KUBELET_SYSTEM_ARGS=--network-plugin=cni --cni-conf-dir=/etc/cni/net.d --cni-bin-dir=/opt/cni/bin --container-runtime=remote --runtime-request-timeout=15m --container-runtime-endpoint=unix:///run/containerd/containerd.sock --cgroup-driver=systemd"
Environment="KUBELET_CONFIG_ARGS=--config=/etc/kubernetes/kubelet-conf.yml"
Environment="KUBELET_EXTRA_ARGS=--node-labels=node.kubernetes.io/node='' "
ExecStart=
ExecStart=/usr/local/bin/kubelet \$KUBELET_KUBECONFIG_ARGS \$KUBELET_CONFIG_ARGS \$KUBELET_SYSTEM_ARGS \$KUBELET_EXTRA_ARGS
EOF
--bootstrap-kubeconfig string
某 kubeconfig 文件的门路,该文件将用于获取 kubelet 的客户端证书。如果 --kubeconfig 所指定的文件不存在,则应用疏导所用 kubeconfig 从 API 服务器申请客户端证书。胜利后,将援用生成的客户端证书和密钥的 kubeconfig 写入 --kubeconfig 所指定的门路。客户端证书和密钥文件将存储在 --cert-dir 所指的目录。--kubeconfig string
kubeconfig 配置文件的门路,指定如何连贯到 API 服务器。提供 --kubeconfig 将启用 API 服务器模式,而省略 --kubeconfig 将启用独立模式。--network-plugin string
< 正告:alpha 个性 > 设置 kubelet/Pod 生命周期中各种事件调用的网络插件的名称。仅当容器运行环境设置为 docker 时,此特定于 docker 的参数才无效。--cni-conf-dir string 默认值:/etc/cni/net.d
< 正告:alpha 个性 > 此值为某目录的全路径名。kubelet 将在其中搜寻 CNI 配置文件。仅当容器运行环境设置为 docker 时,此特定于 docker 的参数才无效。--cni-bin-dir string 默认值:/opt/cni/bin
< 正告:alpha 个性 > 此值为以逗号分隔的残缺门路列表。kubelet 将在所指定门路中搜寻 CNI 插件的可执行文件。仅当容器运行环境设置为 docker 时,此特定于 docker 的参数才无效。--container-runtime string 默认值:docker
要应用的容器运行时。目前反对 docker、remote。--runtime-request-timeout duration 默认值:2m0s
设置除了长时间运行的申请(包含 pull、logs、exec 和 attach 等操作)之外的其余运行时申请的超时工夫。达到超时工夫时,申请会被勾销,抛出一个谬误并会期待重试。已弃用:应在 --config 所给的配置文件中进行设置。--container-runtime-endpoint string 默认值:unix:///var/run/dockershim.sock
[实验性个性] 近程运行时服务的端点。目前反对 Linux 零碎上的 UNIX 套接字和 Windows 零碎上的 npipe 和 TCP 端点。例如:unix:///var/run/dockershim.sock、npipe:////./pipe/dockershim。--cgroup-driver string 默认值:cgroupfs
kubelet 用来操作本机 cgroup 时应用的驱动程序。反对的选项包含 cgroupfs 和 systemd。已弃用:应在 --config 所给的配置文件中进行设置。
kube-proxy
Kubernetes 网络代理在每个节点上运行。网络代理反映了每个节点上 Kubernetes API 中定义的服务,并且能够执行简略的 TCP、UDP 和 SCTP 流转发,或者在一组后端进行 循环 TCP、UDP 和 SCTP 转发。以后可通过 Docker-links-compatible 环境变量找到服务集群 IP 和端口,这些环境变量指定了服务代理关上的端口。有一个可选的插件,能够为这些集群 IP 提供集群 DNS。用户必须应用 apiserver API 创立服务能力配置代理。
cat > /usr/lib/systemd/system/kube-proxy.service << EOF
[Unit]
Description=Kubernetes Kube Proxy
Documentation=https://github.com/kubernetes/kubernetes
After=network.target
[Service]
ExecStart=/usr/local/bin/kube-proxy \
--config=/etc/kubernetes/kube-proxy.yaml \
--v=2
Restart=always
RestartSec=10s
[Install]
WantedBy=multi-user.target
EOF
--config string
配置文件的门路。
https://www.oiox.cn/
https://www.chenby.cn/
https://cby-chen.github.io/
https://weibo.com/u/5982474121
https://blog.csdn.net/qq_3392…
https://my.oschina.net/u/3981543
https://www.zhihu.com/people/…
https://segmentfault.com/u/hp…
https://juejin.cn/user/331578…
https://space.bilibili.com/35…
https://cloud.tencent.com/dev…
https://www.jianshu.com/u/0f8…
https://www.toutiao.com/c/use…
CSDN、GitHub、知乎、开源中国、思否、掘金、简书、腾讯云、哔哩哔哩、今日头条、新浪微博、集体博客、全网可搜《小陈运维》