一、集群初始化与节点管理
1. 初始化前准备
-
拉取镜像 (Master):
bashkubeadm config images pull --kubernetes-version=v1.30.2 # 或使用阿里云镜像仓库 kubeadm config images pull --image-repository registry.aliyuncs.com/google_containers -
Worker节点 需手动拉取
kube-proxy和pause镜像。
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:bashmkdir -p $HOME/.kube && cp /etc/kubernetes/admin.conf $HOME/.kube/config -
部署 Calico 网络(修改
CALICO_IPV4POOL_CIDR为集群 Pod CIDR):bashkubectl apply -f calico.yaml -
所有节点需提前拉取 Calico 相关镜像。
4. 节点加入与验证
-
使用初始化生成的 join 命令或重新生成:
bashkubeadm token create --print-join-command -
验证集群状态:
kubectl get nodes和kubectl get pods -A。
5. 节点维护与删除
-
驱逐节点 (维护模式):
bashkubectl drain <node> --ignore-daemonsets -
删除节点 :
bashkubectl delete node <node> # 在被删除节点上执行 kubeadm reset -f
6. 集群完全删除与重建
- 删除所有 worker 节点 → 删除 master 节点 → 各节点执行
kubeadm reset -f。 - 重建时可直接复用之前的
kubeadm.yml配置文件或重新执行 init。
二、Namespace 与上下文管理
1. Namespace 概念
- 用于逻辑隔离资源,默认有
default、kube-system、kube-public、kube-node-lease。 - 大多数资源属于 Namespace,Node、PV 等底层资源不属于。
2. Namespace 操作
bash
kubectl create ns <name>
kubectl delete ns <name> # 会级联删除该命名空间下所有资源
kubectl get ns
- 操作特定命名空间需加
-n <namespace>。
3. 切换默认 Namespace
-
使用 kubectl :
bashkubectl config set-context --current --namespace=<ns> -
使用 kubens (第三方工具):
bashkubens <ns> # 切换 kubens # 列出所有 kubens -c # 查看当前
4. 多集群切换(Context)
-
~/.kube/config文件包含 clusters、users、contexts 三段。 -
查看与切换上下文 :
bashkubectl config get-contexts kubectl config use-context <context-name> -
使用 kubectx 更便捷:
bashkubectx # 列出上下文 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 需谨慎 :会删除其下所有资源,且
default和kube-system不可删除。