单机部署Kubernetes 1.22:从零开始的完整指南
2025.09.17 11:04浏览量:0简介:本文详细介绍了在单机环境下部署Kubernetes 1.22的完整流程,包括环境准备、组件安装、配置调整及验证测试,帮助开发者快速搭建本地K8s开发环境。
单机部署Kubernetes 1.22:从零开始的完整指南
在云计算与容器化技术飞速发展的今天,Kubernetes(K8s)已成为容器编排领域的标准。对于开发者而言,本地搭建K8s环境是学习、测试和开发的重要基础。本文将详细介绍如何在单机环境下部署Kubernetes 1.22版本,覆盖从环境准备到集群验证的全流程,帮助读者快速构建高效的本地开发环境。
一、环境准备:硬件与软件要求
1.1 硬件配置建议
单机部署K8s 1.22的最低硬件要求为:
- CPU:2核以上(推荐4核)
- 内存:4GB以上(推荐8GB)
- 磁盘空间:至少20GB可用空间(推荐SSD)
- 网络:支持桥接或NAT模式的虚拟网络
实践建议:若用于生产环境模拟,建议使用16GB内存以上配置,避免资源竞争导致的性能下降。
1.2 操作系统选择
K8s 1.22支持多种Linux发行版,推荐使用以下系统:
- Ubuntu 20.04 LTS(官方测试最充分)
- CentOS 7/8(企业环境常用)
- Debian 10/11(轻量级选择)
避坑指南:避免使用Windows系统直接部署,若需在Windows上运行,建议通过WSL2或虚拟机(如VirtualBox、VMware)实现。
1.3 依赖工具安装
在部署前需安装以下工具:
# Ubuntu示例
sudo apt update
sudo apt install -y docker.io conntrack ebtables socat iptables
- Docker:作为容器运行时(需19.03+版本)
- conntrack/ebtables:网络组件依赖
- socat/iptables:端口转发与防火墙管理
二、核心组件安装:kubeadm、kubelet、kubectl
2.1 添加K8s官方仓库
sudo apt-get update && 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
2.2 安装指定版本组件
# 固定版本安装(避免自动升级)
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
版本控制要点:通过
=1.22.0-00
精确指定版本,使用apt-mark hold
防止意外升级。
2.3 配置cgroup驱动
修改Docker配置以匹配K8s的cgroup驱动:
cat <<EOF | sudo tee /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
EOF
sudo systemctl restart docker
三、集群初始化与配置
3.1 使用kubeadm初始化集群
sudo kubeadm init --pod-network-cidr=10.244.0.0/16 --kubernetes-version=v1.22.0
- 参数说明:
--pod-network-cidr
:指定Pod网络范围(需与CNI插件匹配)--kubernetes-version
:强制使用指定版本
常见问题处理:若初始化失败,可通过
kubeadm reset
清理后重试,检查/var/log/cloud-init-output.log
获取详细错误。
3.2 配置kubectl
初始化完成后,按提示执行:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
验证集群状态:
kubectl cluster-info
kubectl get nodes
3.3 部署网络插件(以Calico为例)
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
插件选择建议:
- 小规模环境:Calico或Flannel
- 需要网络策略:Calico
- 轻量级需求:Weave Net
四、验证与测试
4.1 部署测试Pod
kubectl create deployment nginx --image=nginx:alpine
kubectl expose deployment nginx --port=80 --type=NodePort
获取访问端口:
kubectl get svc nginx
通过<节点IP>:<NodePort>
访问服务。
4.2 集群健康检查
# 检查节点状态
kubectl describe nodes
# 检查核心组件日志
journalctl -u kubelet -n 100 --no-pager
五、常见问题解决方案
5.1 Swap未禁用错误
现象:[ERROR Swap]: running with swap on is not supported
解决:
sudo swapoff -a
# 永久禁用(可选)
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
5.2 镜像拉取失败
现象:ImagePullBackOff
解决:
# 使用国内镜像源(以阿里云为例)
sudo sed -i 's|registry.k8s.io|registry.aliyuncs.com/google_containers|g' /etc/containerd/config.toml
sudo systemctl restart containerd
5.3 端口冲突
现象:Port 10250 is in use
解决:
# 查找占用进程
sudo netstat -tulnp | grep 10250
# 终止冲突进程或修改K8s配置
六、进阶优化建议
6.1 资源限制配置
编辑/etc/default/kubelet
,添加:
KUBELET_EXTRA_ARGS="--fail-swap-on=false --max-pods=110"
重启服务:
sudo systemctl daemon-reload
sudo systemctl restart kubelet
6.2 持久化存储配置
使用hostPath作为本地存储示例:
apiVersion: v1
kind: PersistentVolume
metadata:
name: local-pv
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /mnt/data
七、总结与展望
通过本文的步骤,读者可在单机环境下快速部署Kubernetes 1.22集群。此方案适用于:
- 本地开发测试
- 持续集成环境
- 小规模项目原型验证
未来可扩展的方向包括:
- 集成Ingress控制器(如Nginx Ingress)
- 部署监控系统(Prometheus+Grafana)
- 探索Service Mesh(如Istio)
最佳实践:建议定期备份
/etc/kubernetes/manifests/
目录下的静态Pod配置,以便快速恢复集群。
通过严谨的环境配置和组件选择,单机K8s 1.22部署既能满足开发需求,又可为后续迁移到生产集群提供经验积累。
发表评论
登录后可评论,请前往 登录 或 注册