如何在单机环境快速部署Kubernetes 1.22:完整指南与最佳实践
2025.09.17 11:04浏览量:0简介:本文详细介绍了在单机环境下部署Kubernetes 1.22的完整流程,包括环境准备、组件安装、配置优化及常见问题解决,为开发者提供可落地的技术方案。
单机部署Kubernetes 1.22:从零开始的完整指南
一、为什么选择单机部署Kubernetes 1.22?
在云计算和容器化技术快速发展的今天,Kubernetes已成为容器编排的事实标准。对于开发者、测试人员或小型团队而言,单机部署Kubernetes 1.22具有显著优势:
- 低资源消耗:单机环境可模拟生产集群的核心功能,无需多台物理机或虚拟机,降低硬件成本。
- 快速验证:在开发阶段快速验证应用与Kubernetes的兼容性,提前发现配置问题。
- 学习价值:单机环境是理解Kubernetes组件(如API Server、etcd、kubelet)交互的最佳场景。
- 版本适配:Kubernetes 1.22作为长期支持版本(LTS),修复了1.21的已知问题,并引入了Server-side Apply等重要特性,适合生产环境迁移前的测试。
二、环境准备与前置条件
1. 硬件要求
- CPU:至少2核(建议4核以上,避免资源竞争)
- 内存:8GB RAM(建议16GB,尤其是运行多节点模拟时)
- 磁盘:50GB以上可用空间(etcd数据、容器镜像存储)
- 网络:支持桥接或NAT的虚拟网络(避免端口冲突)
2. 操作系统选择
- 推荐系统:Ubuntu 20.04 LTS或CentOS 8(内核版本≥4.15)
- 关键配置:
- 禁用Swap分区(Kubernetes对节点稳定性要求高)
- 配置主机名解析(
/etc/hosts
中添加127.0.0.1 localhost
和主机名映射) - 开放必要端口:6443(API Server)、10250(Kubelet)、10255(Read-only Kubelet)等。
3. 依赖工具安装
# Ubuntu示例:安装Docker和conntrack
sudo apt-get update
sudo apt-get install -y docker.io conntrack
# CentOS示例:安装Docker CE
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y docker-ce docker-ce-cli containerd.io
三、单机部署Kubernetes 1.22的详细步骤
1. 使用Kubeadm初始化集群
Kubeadm是Kubernetes官方推荐的部署工具,可自动化完成核心组件安装。
步骤1:安装Kubeadm、Kubelet和Kubectl
# Ubuntu示例
sudo apt-get install -y apt-transport-https curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubelet=1.22.0-00 kubeadm=1.22.0-00 kubectl=1.22.0-00
sudo apt-mark hold kubelet kubeadm kubectl
# CentOS示例
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF
sudo yum install -y kubelet-1.22.0 kubeadm-1.22.0 kubectl-1.22.0
sudo systemctl enable --now kubelet
步骤2:初始化控制平面
sudo kubeadm init --kubernetes-version=v1.22.0 --pod-network-cidr=10.244.0.0/16
# 参数说明:
# --pod-network-cidr:指定Pod网络范围(需与后续CNI插件匹配)
# --apiserver-advertise-address:若有多网卡,需指定监听IP
初始化成功后,终端会输出类似以下信息:
Your Kubernetes control-plane has initialized successfully!
To start using your cluster, you need to run the following as a regular user:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
步骤3:配置Kubectl
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
2. 部署CNI网络插件
Kubernetes默认不提供网络实现,需手动部署CNI(Container Network Interface)插件。
推荐选项:Calico
kubectl create -f https://docs.projectcalico.org/manifests/calico.yaml
# 或使用Flannel(更轻量)
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
验证网络状态:
kubectl get pods -n kube-system | grep calico # 或flannel
3. 加入工作节点(单机环境可跳过)
若需模拟多节点,可在同一台机器上通过kubeadm join
添加工作节点,但需注意:
- 避免端口冲突(修改Kubelet的
--node-ip
参数) - 使用
--control-plane
标志可添加额外控制平面节点(高可用测试)
四、关键配置优化与验证
1. 核心组件状态检查
kubectl get componentstatuses # 检查API Server、Controller Manager、Scheduler状态
kubectl get nodes -o wide # 查看节点状态(Ready表示成功)
2. 部署测试应用
kubectl create deployment nginx --image=nginx:alpine
kubectl expose deployment nginx --port=80 --type=NodePort
kubectl get svc nginx # 获取NodePort端口
curl http://localhost:<NodePort> # 测试访问
3. 日志与故障排查
- Kubelet日志:
journalctl -u kubelet -f
- API Server日志:
sudo docker logs -f k8s_kube-apiserver_<container-id>
- 常见问题:
- 证书过期:运行
kubeadm certs renew all
- 网络不通:检查防火墙规则(
sudo ufw status
或sudo iptables -L
) - 资源不足:通过
kubectl top nodes
查看资源使用率
- 证书过期:运行
五、单机部署的局限性及扩展建议
- 高可用缺失:单机环境无法模拟etcd集群或控制平面冗余,生产环境需至少3个节点。
- 性能瓶颈:单节点需承载所有组件(API Server、etcd、Kubelet),资源竞争可能导致延迟。
- 扩展方案:
- 使用
kind
(Kubernetes in Docker)快速创建多节点集群:kind create cluster --image=kindest/node:v1.22.0 --config=kind-config.yaml
- 结合Minikube的
--driver=none
模式(直接使用主机Docker):minikube start --kubernetes-version=v1.22.0 --driver=none
- 使用
六、总结与最佳实践
单机部署Kubernetes 1.22是开发者学习、测试和验证的高效方式。通过Kubeadm自动化工具,结合CNI插件和资源监控,可快速构建功能完整的集群环境。建议:
- 定期备份:使用
etcdctl snapshot save
备份etcd数据。 - 版本锁定:通过
apt-mark hold
或yum versionlock
防止意外升级。 - 文档记录:保存
kubeadm init
的输出和配置文件,便于复现环境。
通过本文的步骤,读者可在20分钟内完成Kubernetes 1.22的单机部署,为后续的容器化应用开发奠定基础。
发表评论
登录后可评论,请前往 登录 或 注册