安装Docker

节点管理教程

安装 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管理节点,以下是启动一个新节点的步骤:

  1. 获取镜像:
    docker pull kubernetes/pause:3.18
  2. 启动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)
  3. 访问节点:
    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集群。

安装Docker

扫码添加老王VPN官方微信

扫码添加老王VPN官方微信

020-8756-3928
扫码添加老王VPN官方微信

扫码添加老王VPN官方微信

网站地图