Kubernetes 集群部署与管理核心要点

一、集群初始化与节点管理

1. 初始化前准备

  • 拉取镜像 (Master):

    bash 复制代码
    kubeadm config images pull --kubernetes-version=v1.30.2
    # 或使用阿里云镜像仓库
    kubeadm config images pull --image-repository registry.aliyuncs.com/google_containers
  • Worker节点 需手动拉取 kube-proxypause 镜像。

2. 集群初始化

bash 复制代码
kubeadm init --kubernetes-version=v1.30.2 --pod-network-cidr=10.224.0.0/16
  • --pod-network-cidr 需与后续网络插件(如Calico)保持一致。
  • 初始化成功后记录 kubeadm join 命令及 token。

3. 配置凭据与网络

  • 复制 admin.conf 到 ~/.kube/config

    bash 复制代码
    mkdir -p $HOME/.kube && cp /etc/kubernetes/admin.conf $HOME/.kube/config
  • 部署 Calico 网络(修改 CALICO_IPV4POOL_CIDR 为集群 Pod CIDR):

    bash 复制代码
    kubectl apply -f calico.yaml
  • 所有节点需提前拉取 Calico 相关镜像。

4. 节点加入与验证

  • 使用初始化生成的 join 命令或重新生成:

    bash 复制代码
    kubeadm token create --print-join-command
  • 验证集群状态:kubectl get nodeskubectl get pods -A

5. 节点维护与删除

  • 驱逐节点 (维护模式):

    bash 复制代码
    kubectl drain <node> --ignore-daemonsets
  • 删除节点

    bash 复制代码
    kubectl delete node <node>
    # 在被删除节点上执行
    kubeadm reset -f

6. 集群完全删除与重建

  • 删除所有 worker 节点 → 删除 master 节点 → 各节点执行 kubeadm reset -f
  • 重建时可直接复用之前的 kubeadm.yml 配置文件或重新执行 init。

二、Namespace 与上下文管理

1. Namespace 概念

  • 用于逻辑隔离资源,默认有 defaultkube-systemkube-publickube-node-lease
  • 大多数资源属于 Namespace,Node、PV 等底层资源不属于。

2. Namespace 操作

bash 复制代码
kubectl create ns <name>
kubectl delete ns <name>          # 会级联删除该命名空间下所有资源
kubectl get ns
  • 操作特定命名空间需加 -n <namespace>

3. 切换默认 Namespace

  • 使用 kubectl

    bash 复制代码
    kubectl config set-context --current --namespace=<ns>
  • 使用 kubens (第三方工具):

    bash 复制代码
    kubens <ns>           # 切换
    kubens                # 列出所有
    kubens -c             # 查看当前

4. 多集群切换(Context)

  • ~/.kube/config 文件包含 clusters、users、contexts 三段。

  • 查看与切换上下文

    bash 复制代码
    kubectl config get-contexts
    kubectl config use-context <context-name>
  • 使用 kubectx 更便捷:

    bash 复制代码
    kubectx               # 列出上下文
    kubectx <name>        # 切换
    kubectx -c            # 显示当前

三、关键配置文件与命令速查

操作 命令
查看集群信息 kubectl cluster-info
查看节点详情 kubectl describe node <node>
获取 kubeadm 配置 kubectl get cm kubeadm-config -n kube-system -o yaml
设置 KUBECONFIG 环境变量 export KUBECONFIG=/path/to/config
查看当前上下文 kubectl config current-context

四、常见问题与注意事项

  • 节点 NotReady:检查网络插件是否部署成功、swap 是否关闭、SELinux 是否禁用。
  • Pod 网络不一致 :Calico 的 CALICO_IPV4POOL_CIDR 必须与 --pod-network-cidr 相同。
  • Token 过期 :使用 kubeadm token create 重新生成。
  • 删除 Namespace 需谨慎 :会删除其下所有资源,且 defaultkube-system 不可删除。