9.5. 为 kubelet 配置 TLS 安全配置集
要在作为 HTTP 服务器时为 kubelet 配置 TLS 安全配置集,请创建一个 KubeletConfig
自定义资源(CR)来为特定节点指定预定义或自定义 TLS 安全配置集。如果没有配置 TLS 安全配置集,则默认 TLS 安全配置集为 Intermediate
。
kubelet 使用其 HTTP/GRPC 服务器与 Kubernetes API 服务器通信,后者向 pod 发送命令,收集日志,并通过 kubelet 对 pod 运行 exec 命令。
在 worker 节点上配置 Old
TLS 安全配置集的 KubeletConfig
CR 示例
apiVersion: config.openshift.io/v1 kind: KubeletConfig ... spec: tlsSecurityProfile: old: {} type: Old machineConfigPoolSelector: matchLabels: pools.operator.machineconfiguration.openshift.io/worker: ""
您可以在配置的节点上的 kubelet.conf
文件中看到配置 TLS 安全配置集的密码和最小 TLS 版本。
先决条件
-
您可以使用具有
cluster-admin
角色的用户访问集群。
流程
创建
KubeletConfig
CR 来配置 TLS 安全配置集:Custom
配置集的KubeletConfig
CR 示例apiVersion: machineconfiguration.openshift.io/v1 kind: KubeletConfig metadata: name: set-kubelet-tls-security-profile spec: tlsSecurityProfile: type: Custom 1 custom: 2 ciphers: 3 - ECDHE-ECDSA-CHACHA20-POLY1305 - ECDHE-RSA-CHACHA20-POLY1305 - ECDHE-RSA-AES128-GCM-SHA256 - ECDHE-ECDSA-AES128-GCM-SHA256 minTLSVersion: VersionTLS11 machineConfigPoolSelector: matchLabels: pools.operator.machineconfiguration.openshift.io/worker: "" 4
创建
KubeletConfig
对象:$ oc create -f <filename>
根据集群中的 worker 节点数量,等待配置的节点被逐个重启。
验证
要验证是否设置了配置集,请在节点处于 Ready
状态后执行以下步骤:
为配置的节点启动 debug 会话:
$ oc debug node/<node_name>
将
/host
设置为 debug shell 中的根目录:sh-4.4# chroot /host
查看
kubelet.conf
文件:sh-4.4# cat /etc/kubernetes/kubelet.conf
输出示例
kind: KubeletConfiguration apiVersion: kubelet.config.k8s.io/v1beta1 ... "tlsCipherSuites": [ "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256", "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384", "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384", "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256", "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256" ], "tlsMinVersion": "VersionTLS12",