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

1. 初始化前准备

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

2. 集群初始化

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
    mkdir -p $HOME/.kube && cp /etc/kubernetes/admin.conf $HOME/.kube/config
    
  • 部署 Calico 网络(修改 CALICO_IPV4POOL_CIDR 为集群 Pod CIDR):
    kubectl apply -f calico.yaml
    
  • 所有节点需提前拉取 Calico 相关镜像。

4. 节点加入与验证

  • 使用初始化生成的 join 命令或重新生成:
    kubeadm token create --print-join-command
    
  • 验证集群状态:kubectl get nodeskubectl get pods -A

5. 节点维护与删除

  • 驱逐节点(维护模式):
    kubectl drain <node> --ignore-daemonsets
    
  • 删除节点
    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 操作

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

3. 切换默认 Namespace

  • 使用 kubectl
    kubectl config set-context --current --namespace=<ns>
    
  • 使用 kubens(第三方工具):
    kubens <ns>           # 切换
    kubens                # 列出所有
    kubens -c             # 查看当前
    

4. 多集群切换(Context)

  • ~/.kube/config 文件包含 clusters、users、contexts 三段。
  • 查看与切换上下文
    kubectl config get-contexts
    kubectl config use-context <context-name>
    
  • 使用 kubectx 更便捷:
    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 不可删除。

更多推荐