如何在接入集群中启用 Pod Debug 功能?
接入平台的集群,如需使用 Pod Debug 功能,需满足以下条件:
-
集群的 Kubernetes 版本大于 1.18。
-
已为集群下 所有控制节点 上的 kube-apiserver、kube-controller-manager、kube-scheduler 组件,开启了 EphemeralContainers 功能开关。
-
已为集群下 所有计算节点 上的 kubelet 组件,开启了 EphemeralContainers 功能开关。
本文将以 标准 Kubernetes 集群 为例,为您介绍如何为集群下所有 控制节点 以及所有 计算节点 上的相关组件,开启 EphemeralContainers 功能开关。
开启控制节点上组件的功能开关
通过修改集群下 所有控制节点 上的 kube-apiserver.yaml、kube-controller-manager.yaml、kube-scheduler.yaml 配置文件,为相应组件开启 EphemeralContainers
功能开关。
操作步骤:
-
在控制节点上执行以下命令行,进入文件所在目录。
cd /etc/kubernetes/manifests/
-
执行以下命令行,参照示例分别修改 kube-apiserver.yaml、kube-controller-manager.yaml、kube-scheduler.yaml 文件中的容器启动参数。
vi <配置文件名称>
提示:多个值之间用
,
分隔,若文件中缺失相应的配置项,请手动添加。示例
spec: containers: - command: - <组件名称> ## 配置文件对应的组件名称。kube-apiserver、kube-controller-manager、kube-scheduler - --feature-gates=EphemeralContainers=true,...
-
执行以下命令行,重启 kubelet。
systemctl restart kubelet.service
开启计算节点上组件的功能开关
通过修改集群下 所有计算节点 上的 kubelet 组件的启动参数,为其开启 EphemeralContainers
功能开关。
方案一
-
在计算节点上执行以下命令行,参考示例在 kubeadm-flags.env 文件中增加
--feature-gates=EphemeralContainers=true
环境变量。vi /var/lib/kubelet/kubeadm-flags.env
示例
KUBELET_KUBEADM_ARGS="--feature-gates=EphemeralContainers=true,CSIStorageCapacity=true --hostname-override=192.168.31.207 --network-plugin=cni --node-ip=192.168.31.207,2002::192:168:31:207 --node-labels=platform.tkestack.io/machine-ipv6-head=2002aa192a,platform.tkestack.io/machine-ipv6-tail=168a31a207 --pod-infra-container-image=192.168.31.206:60080/tkestack/pause:3.2"
-
执行以下命令行,重启 kubelet。
systemctl restart kubelet.service
方案二
-
在计算节点上执行以下命令行,参考示例在 config.yaml 文件中,为 featureGates 参数增加
EphemeralContainers: true
配置项。vi /var/lib/kubelet/config.yaml
示例
featureGates: IPv6DualStack: true EphemeralContainers: true
-
执行以下命令行,重启 kubelet。
systemctl restart kubelet.service