节点管理教程
安装 prerequisites
在开始管理节点之前,确保以下工具已安装:
- Docker:用于容器化应用。
- Kubernetes CLI(kubectl):用于管理Kubernetes集群。
- Python(可选):用于编写脚本或自检工具。
安装步骤:
# 安装kubectl
curl -LO "https://github.com/kubernetes/kubectl/releases/download/v$(kubectl version 1.22.1 | cut -d'v' -f2)/kubectl-$(uname -m)-linux-gnu-21.4.2"
do mv -T kubectl-*/kubectl /usr/local/bin/kubectl
do chmod +x /usr/local/bin/kubectl
创建或扩展节点
在Kubernetes中,节点(Node)是集群中的工作节点,负责运行容器。
1 使用minikube启动节点
如果您使用minikube(本地Kubernetes集群),可以通过以下命令启动节点:
minikube start
这将在本地启动一个Kubernetes集群,包含一个节点。
2 使用kubelet启动节点
对于生产环境,通常使用kubelet管理节点,以下是启动一个新节点的步骤:
- 获取镜像:
docker pull kubernetes/pause:3.18
- 启动kubelet容器:
docker run -d --name=kubelet-node -v /var/lib/kubelet:/var/lib/kubelet \ --cgroup cgroupv1.cfs \ --cap add=CHOWN \ --systemd --network=bridge \ --restart always \ kubernetes/kubelet:v$(KUBERNETES_VERSION)
- 访问节点:
kubectl get nodes
您应该看到一个新的节点已加入集群。
查看节点状态
检查节点的状态,确保它们都处于Ready状态。
kubectl get nodes
输出示例:
NAME STATUS ROLES AGE VERSION
node1 Ready master 1h v1.22.1
node2 Ready worker 1h v1.22.1
节点自检
确保节点配置正确,包括网络、磁盘、内存等资源。
1 检查节点的资源使用情况
kubectl get node node1 --show-all
输出示例:
NAME: node1
STATUS: Ready
ROLES: master
AGE: 1h
VERSION: v1.22.1
CONFIGURATION:
cgroupv1.cfs = true
cgroups = "node,cpu,cpuacct,mem"
cpu = true
cpuacct = true
memory = true
swap = false
kubelet-cgroups = true
kubelet-deny-cgroups = false
kubelet-node-name = node1
kubelet-cgroups-permissive = true
kubelet-deny-unknown-commands = false
kubelet-node-name-id = 5
kubelet-packet-tunnel = true
kubelet-cri-o = true
...
2 使用自检脚本
编写一个脚本来检查节点的配置:
#!/bin/bash # 检查节点是否可达 curl -u "username:password" http://node1:808/healthz # 检查网络连接 ping node2
根据需求扩展脚本。
节点扩展/缩小
如果需要扩展或缩小节点数量,可以执行以下操作:
1 增加节点
# 使用yaml文件定义节点配置 kubectl apply -f node.yaml
node.yaml 内容示例:
kind: Node
apiVersion: v1
metadata:
name: node3
labels:
role: worker
spec:
max-pods: 100
taints: []
2 缩小节点
kubectl delete nodes node2
注意:删除节点前,确保所有工作负载已迁移完成,避免影响服务。
节点故障处理
如果某个节点出现问题,例如不响应或状态不再为Ready,可以采取以下措施:
1 删除故障节点
kubectl delete node node1
2 迁移工作负载
kubectl drain node1 --delete-empty-pods=true
这将将节点的工作负载迁移到其他节点。
高级节点管理操作
- 节点标签:为节点添加标签以便区分角色。
kubectl label node node1 role=worker
- 节点taint:为节点添加污染标签,以限制运行的Pod类型。
kubectl taint node node1 role=worker:NoSchedule
- 节点扩展:在集群中添加更多节点以扩展资源。
kubectl apply -f scale.yaml
- 节点安全组:管理节点的网络安全组规则,允许必要的流量。
节点管理是Kubernetes集群运维的核心任务,涉及节点的创建、状态监控、故障处理等操作,通过熟悉kubectl命令和理解节点的角色与状态,您可以有效地管理和维护Kubernetes集群。









