1. Kubernetes 1.33.7 部署环境准备
1.1 系统要求与兼容性检查
Kubernetes 1.33.7 对运行环境有明确的基础要求。在实际部署前,需要确保所有节点满足以下条件:
- 操作系统:推荐使用 Ubuntu 20.04 LTS 或 CentOS 8 等主流Linux发行版
- 硬件配置:每个节点至少2核CPU、2GB内存(生产环境建议4核8GB起步)
- 网络要求:节点间双向网络可达,禁用swap分区
- 容器运行时:支持 containerd 1.6+ 或 Docker CE 20.10+
验证系统兼容性的快速检查命令:
bash复制# 检查内核版本(需≥3.10)
uname -r
# 验证cgroups可用性
grep -c 'memory' /proc/cgroups
# 确认swap已禁用
free -h | grep Swap
1.2 基础依赖安装
所有节点需要预先安装以下基础组件:
bash复制# Ubuntu/Debian
sudo apt-get update && sudo apt-get install -y \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release
# CentOS/RHEL
sudo yum install -y \
yum-utils \
device-mapper-persistent-data \
lvm2
重要提示:国内用户建议配置阿里云或腾讯云的镜像源加速软件包下载
2. 容器运行时配置
2.1 containerd 安装与调优
containerd 已成为 Kubernetes 官方推荐的容器运行时。安装步骤如下:
- 下载最新稳定版:
bash复制wget https://github.com/containerd/containerd/releases/download/v1.6.8/containerd-1.6.8-linux-amd64.tar.gz
sudo tar Cxzvf /usr/local containerd-1.6.8-linux-amd64.tar.gz
- 生成默认配置文件:
bash复制sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
- 关键配置优化:
toml复制[plugins."io.containerd.grpc.v1.cri".containerd]
snapshotter = "overlayfs"
disable_snapshot_annotations = true
[plugins."io.containerd.grpc.v1.cri".registry.mirrors]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
endpoint = ["https://registry-1.docker.io"]
2.2 国内镜像加速方案
对于国内环境,需要配置镜像加速器以避免拉取镜像失败:
- 修改containerd配置:
toml复制[plugins."io.containerd.grpc.v1.cri".registry.mirrors]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
endpoint = ["https://<your-mirror>.mirror.aliyuncs.com"]
- 重启服务生效:
bash复制sudo systemctl restart containerd
3. Kubernetes 组件安装
3.1 使用kubeadm部署集群
kubeadm是官方推荐的集群部署工具,安装流程如下:
- 添加Kubernetes源并安装组件:
bash复制# 添加GPG密钥
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
# 添加APT源(国内可使用阿里云镜像)
cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
# 安装kubelet/kubeadm/kubectl
sudo apt-get update && sudo apt-get install -y \
kubelet=1.33.7-00 \
kubeadm=1.33.7-00 \
kubectl=1.33.7-00
- 初始化控制平面节点:
bash复制sudo kubeadm init \
--kubernetes-version=v1.33.7 \
--pod-network-cidr=10.244.0.0/16 \
--apiserver-advertise-address=<your-ip> \
--image-repository=registry.aliyuncs.com/google_containers
- 配置kubectl访问:
bash复制mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
3.2 网络插件部署
Flannel是最常用的CNI插件之一,部署命令:
bash复制kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
验证网络组件状态:
bash复制kubectl get pods -n kube-system -l app=flannel
4. 工作节点加入集群
4.1 节点加入流程
在控制平面节点上获取加入命令:
bash复制kubeadm token create --print-join-command
在工作节点上执行输出的join命令,格式类似:
bash复制sudo kubeadm join <control-plane-ip>:6443 \
--token <token> \
--discovery-token-ca-cert-hash sha256:<hash>
4.2 节点状态验证
在所有节点就绪后检查集群状态:
bash复制kubectl get nodes -o wide
kubectl get pods --all-namespaces
预期输出应显示所有节点状态为Ready,且核心组件运行正常。
5. 生产环境关键配置
5.1 高可用方案
对于生产环境,建议部署多控制平面节点实现高可用:
- 部署负载均衡器(如HAProxy)对接多个控制平面节点
- 后续节点使用以下命令加入:
bash复制kubeadm join <load-balancer-ip>:6443 \
--token <token> \
--discovery-token-ca-cert-hash sha256:<hash> \
--control-plane \
--certificate-key <key>
5.2 关键参数调优
- kubelet资源配置(/etc/default/kubelet):
conf复制KUBELET_EXTRA_ARGS="--max-pods=110 --kube-reserved=cpu=500m,memory=1Gi --system-reserved=cpu=500m,memory=1Gi"
- API服务器参数优化(/etc/kubernetes/manifests/kube-apiserver.yaml):
yaml复制spec:
containers:
- command:
- kube-apiserver
- --audit-log-maxbackup=10
- --audit-log-maxsize=100
- --event-ttl=168h
6. 常见问题排查指南
6.1 节点NotReady状态处理
- 检查kubelet服务状态:
bash复制journalctl -u kubelet -n 50 --no-pager
- 验证网络插件日志:
bash复制kubectl logs -n kube-system <flannel-pod-name>
- 常见修复步骤:
bash复制# 重启kubelet
sudo systemctl restart kubelet
# 重置网络配置
sudo ip link delete cni0
sudo ip link delete flannel.1
6.2 镜像拉取失败解决方案
- 临时使用国内镜像源:
bash复制docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/<image-name>:<tag>
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/<image-name>:<tag> k8s.gcr.io/<image-name>:<tag>
- 配置全局镜像仓库替换:
bash复制sudo kubeadm config images pull --image-repository=registry.aliyuncs.com/google_containers
7. 集群维护与升级
7.1 版本升级策略
Kubernetes采用季度发布周期,建议遵循以下升级路径:
- 先升级kubeadm工具:
bash复制sudo apt-get update && sudo apt-get install -y kubeadm=1.33.7-00
- 验证升级计划:
bash复制sudo kubeadm upgrade plan
- 执行控制平面升级:
bash复制sudo kubeadm upgrade apply v1.33.7
7.2 日常维护命令
- 查看证书过期时间:
bash复制kubeadm certs check-expiration
- 手动更新证书:
bash复制kubeadm certs renew all
- 集群状态诊断:
bash复制kubectl get componentstatuses
kubectl cluster-info dump