上云无忧 > 文档中心 > 腾讯云容器服务实战教程 - 使用 Ansible 批量操作 TKE 节点
容器服务 TKE
腾讯云容器服务实战教程 - 使用 Ansible 批量操作 TKE 节点

文档简介:
操作场景: 容器服务 TKE 集群新增节点可通过在“自定义数据”中填入脚本来进行批量操作,例如统一修改内核参数。但如需对已新增的存量节点进行批量操作,您可参考本文使用开源工具 Ansible 进行操作。
*此产品及展示信息均由腾讯云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

操作场景

容器服务 TKE 集群新增节点可通过在“自定义数据”中填入脚本来进行批量操作,例如统一修改内核参数。但如需对已新增的存量节点进行批量操作,您可参考本文使用开源工具 Ansible 进行操作。

原理介绍

Ansible 是一款流行的开源运维工具,可以直接通过 SSH 协议批量操作机器,无需事先进行手动安装依赖等操作,十分便捷。原理示意图如下:

操作步骤

准备 Ansible 控制节点

1. 选取实例作为 Ansible 的控制节点,通过此节点批量发起对存量 TKE 节点的操作。可选择与集群所在私有网络 VPC 中任意实例作为控制节点(包括 TKE 节点)。
2. 选定控制节点后,选择对应方式安装 Ansible:
Ubuntu 操作系统安装方式:

		

sudo apt update && sudo apt install software-properties-common -y && sudo

apt-add-repository --yes --update ppa:ansible/ansible && sudo apt install ansible -y

CentOS 操作系统安装方式:
		
sudo yum install ansible -y

准备配置文件

将所有需要进行配置操作的节点内网 IP 配置到 host.ini 文件中,每行一个 IP。示例如下:
		
10.0.3.33
10.0.2.4
如需操作所有节点,可通过以下命令一键生成 hosts.ini 文件。
		
kubectl get nodes -o jsonpath='{.items[*].status.addresses[?(@.type=="InternalIP")].address}' | tr ' ' '\n' > hosts.ini

准备批量执行脚本

将需批量执行的操作写入脚本,并保存为脚本文件。示例如下: 自建镜像仓库后没有权威机构颁发证书,直接使用 HTTP 或 HTTPS 自签发的证书,默认情况下 dockerd 拉取镜像时会报错。此时可通过批量修改节点的 dockerd 配置,将自建仓库地址添加到 dockerd 配置的 insecure-registries 中使 dockerd 忽略证书校验。脚本文件 modify-dockerd.sh 内容如下:
		
# yum install -y jq # centos
apt install -y jq # ubuntu
cat /etc/docker/daemon.json | jq '."insecure-registries" += ["myharbor.com"]' > /tmp/daemon.json
cp /tmp/daemon.json /etc/docker/daemon.json
systemctl restart dockerd

使用 Ansible 批量执行脚本

通常 TKE 节点在新增时均指向一个 SSH 登录密钥或密码。请按照实际情况执行以下操作:

使用密钥

1. 准备密钥文件,例如 tke.key
2. 执行以下命令,授权密钥文件。
		
chmod 0600 tke.key
3. 批量执行脚本:
Ubuntu 操作系统节点批量执行示例如下:

		

ansible all -i hosts.ini --ssh-common-args="-o StrictHostKeyChecking=no -o

UserKnownHostsFile=/dev/null" --user ubuntu --become --become-user=root --private-key=tke.key -m script -a "modify-dockerd.sh"

其他操作系统节点批量执行示例如下:

		

ansible all -i hosts.ini --ssh-common-args="-o StrictHostKeyChecking=no -o

UserKnownHostsFile=/dev/null" --user root -m script -a "modify-dockerd.sh"

使用密码

1. 执行以下命令,将密码输入至 PASS 变量。
		
read -s PASS
2. 批量执行脚本:
Ubuntu 操作系统节点的 SSH 用户名默认为 ubuntu,批量执行示例如下:

		

ansible all -i hosts.ini --ssh-common-args="-o StrictHostKeyChecking=no

-o UserKnownHostsFile=/dev/null" --user ubuntu --become --become-user=root

-e "ansible_password=$PASS" -m script -a "modify-dockerd.sh"

其他系统节点的 SSH 用户名默认为 root,批量执行示例如下:
		
ansible all -i hosts.ini --ssh-common-args="-o StrictHostKeyChecki
相似文档
  • 使用场景: 当发生人为误操作、应用出现 bug、恶意程序调用 apiserver 接口,集群资源会被删除或修改。此时可通过集群审计功能记录 apiserver 的接口调用,即可根据条件检索和分析审计日志找到问题原因。本文介绍了集群审计功能的具体使用场景及使用示例,您可参考本文开始使用集群审计功能。
  • 操作场景: 使用容器服务 TKE 控制台创建的 Ingress 配置的证书,会引用 SSL 证书 中托管的证书,若 Ingress 使用时间较长,证书存在过期的风险。证书过期会对线上业务造成巨大影响,因此需要在证书过期前进行续期,您可参考本文为 Ingress 证书续期。
  • 概述: 随着 HTTPS 不断普及,大多数网站开始由 HTTP 升级到 HTTPS。使用 HTTPS 需要向权威机构申请证书,并且需要付出一定的成本,如果需求数量多,则开支也相对增加。cert-manager 是 Kubernetes 上的全能证书管理工具,支持利用 cert-manager 基于 ACME 协议与 Let's Encrypt 签发免费证书并为证书自动续期,实现永久免费使用证书。
  • 概述: 如果您的域名使用腾讯云 DNSPod 管理,并期望在 Kubernetes 上为域名自动签发免费证书,可以使用 cert-manager 来实现。 cert-manager 支持许多 DNS provider,但不支持国内的 DNSPod,不过 cert-manager 提供了 Webhook 机制来扩展 provider,社区也有 DNSPod 的 provider 实现。本文将介绍如何结合 cert-manager 与 cert-manager-webhook-dnspod 来实现为 DNSPod 上的域名自动签发免费证书。
  • 在 Kubernetes 集群运行时,节点有时会因为组件问题、内核死锁、资源不足等原因不可用。Kubelet 默认对节点的 PIDPressure、MemoryPressure、DiskPressure 等资源状态进行监控,但是存在当 Kubelet 上报状态时节点已处于不可用状态的情况,甚至 Kubelet 可能已开始驱逐 Pod。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部