logo

如何在单机环境快速部署Kubernetes 1.22:完整指南与最佳实践

作者:很菜不狗2025.09.17 11:04浏览量:0

简介:本文详细介绍了在单机环境下部署Kubernetes 1.22的完整流程,包括环境准备、组件安装、配置优化及常见问题解决,为开发者提供可落地的技术方案。

单机部署Kubernetes 1.22:从零开始的完整指南

一、为什么选择单机部署Kubernetes 1.22?

云计算和容器化技术快速发展的今天,Kubernetes已成为容器编排的事实标准。对于开发者、测试人员或小型团队而言,单机部署Kubernetes 1.22具有显著优势:

  1. 低资源消耗:单机环境可模拟生产集群的核心功能,无需多台物理机或虚拟机,降低硬件成本。
  2. 快速验证:在开发阶段快速验证应用与Kubernetes的兼容性,提前发现配置问题。
  3. 学习价值:单机环境是理解Kubernetes组件(如API Server、etcd、kubelet)交互的最佳场景。
  4. 版本适配: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. 依赖工具安装

  1. # Ubuntu示例:安装Docker和conntrack
  2. sudo apt-get update
  3. sudo apt-get install -y docker.io conntrack
  4. # CentOS示例:安装Docker CE
  5. sudo yum install -y yum-utils
  6. sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  7. sudo yum install -y docker-ce docker-ce-cli containerd.io

三、单机部署Kubernetes 1.22的详细步骤

1. 使用Kubeadm初始化集群

Kubeadm是Kubernetes官方推荐的部署工具,可自动化完成核心组件安装。
步骤1:安装Kubeadm、Kubelet和Kubectl

  1. # Ubuntu示例
  2. sudo apt-get install -y apt-transport-https curl
  3. curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
  4. echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
  5. sudo apt-get update
  6. sudo apt-get install -y kubelet=1.22.0-00 kubeadm=1.22.0-00 kubectl=1.22.0-00
  7. sudo apt-mark hold kubelet kubeadm kubectl
  8. # CentOS示例
  9. cat <<EOF > /etc/yum.repos.d/kubernetes.repo
  10. [kubernetes]
  11. name=Kubernetes
  12. baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch
  13. enabled=1
  14. gpgcheck=1
  15. repo_gpgcheck=1
  16. gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
  17. EOF
  18. sudo yum install -y kubelet-1.22.0 kubeadm-1.22.0 kubectl-1.22.0
  19. sudo systemctl enable --now kubelet

步骤2:初始化控制平面

  1. sudo kubeadm init --kubernetes-version=v1.22.0 --pod-network-cidr=10.244.0.0/16
  2. # 参数说明:
  3. # --pod-network-cidr:指定Pod网络范围(需与后续CNI插件匹配)
  4. # --apiserver-advertise-address:若有多网卡,需指定监听IP

初始化成功后,终端会输出类似以下信息:

  1. Your Kubernetes control-plane has initialized successfully!
  2. To start using your cluster, you need to run the following as a regular user:
  3. mkdir -p $HOME/.kube
  4. sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  5. sudo chown $(id -u):$(id -g) $HOME/.kube/config

步骤3:配置Kubectl

  1. mkdir -p $HOME/.kube
  2. sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  3. sudo chown $(id -u):$(id -g) $HOME/.kube/config

2. 部署CNI网络插件

Kubernetes默认不提供网络实现,需手动部署CNI(Container Network Interface)插件。
推荐选项:Calico

  1. kubectl create -f https://docs.projectcalico.org/manifests/calico.yaml
  2. # 或使用Flannel(更轻量)
  3. kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

验证网络状态:

  1. kubectl get pods -n kube-system | grep calico # 或flannel

3. 加入工作节点(单机环境可跳过)

若需模拟多节点,可在同一台机器上通过kubeadm join添加工作节点,但需注意:

  • 避免端口冲突(修改Kubelet的--node-ip参数)
  • 使用--control-plane标志可添加额外控制平面节点(高可用测试)

四、关键配置优化与验证

1. 核心组件状态检查

  1. kubectl get componentstatuses # 检查API Server、Controller Manager、Scheduler状态
  2. kubectl get nodes -o wide # 查看节点状态(Ready表示成功)

2. 部署测试应用

  1. kubectl create deployment nginx --image=nginx:alpine
  2. kubectl expose deployment nginx --port=80 --type=NodePort
  3. kubectl get svc nginx # 获取NodePort端口
  4. 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 statussudo iptables -L
    • 资源不足:通过kubectl top nodes查看资源使用率

五、单机部署的局限性及扩展建议

  1. 高可用缺失:单机环境无法模拟etcd集群或控制平面冗余,生产环境需至少3个节点。
  2. 性能瓶颈:单节点需承载所有组件(API Server、etcd、Kubelet),资源竞争可能导致延迟。
  3. 扩展方案
    • 使用kind(Kubernetes in Docker)快速创建多节点集群:
      1. kind create cluster --image=kindest/node:v1.22.0 --config=kind-config.yaml
    • 结合Minikube的--driver=none模式(直接使用主机Docker):
      1. minikube start --kubernetes-version=v1.22.0 --driver=none

六、总结与最佳实践

单机部署Kubernetes 1.22是开发者学习、测试和验证的高效方式。通过Kubeadm自动化工具,结合CNI插件和资源监控,可快速构建功能完整的集群环境。建议:

  1. 定期备份:使用etcdctl snapshot save备份etcd数据。
  2. 版本锁定:通过apt-mark holdyum versionlock防止意外升级。
  3. 文档记录:保存kubeadm init的输出和配置文件,便于复现环境。

通过本文的步骤,读者可在20分钟内完成Kubernetes 1.22的单机部署,为后续的容器化应用开发奠定基础。

相关文章推荐

发表评论