如何顺利在centos上安装k8s
导读:在 CentOS 上顺利安装 Kubernetes 的实操指南 一 环境准备与前置条件 系统建议:CentOS 7.x/8.x,内核建议 ≥ 3.10;硬件最低:2 核 CPU、2–4 GB 内存、20 GB 磁盘(生产建议 4 核/8...
在 CentOS 上顺利安装 Kubernetes 的实操指南
一 环境准备与前置条件
- 系统建议:CentOS 7.x/8.x,内核建议 ≥ 3.10;硬件最低:2 核 CPU、2–4 GB 内存、20 GB 磁盘(生产建议 4 核/8 GB+)。节点间网络互通,时间同步(推荐 chrony/ntp)。
- 主机名与解析:为各节点设置唯一主机名(如 master、worker1),并在 /etc/hosts 做好解析。
- 关闭交换分区与 SELinux:
- 临时与永久关闭 swap:
sudo swapoff -a & & sudo sed -i '/swap/s/^/#/' /etc/fstab - SELinux 可先设为宽容模式:
sudo setenforce 0 & & sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/' /etc/selinux/config
- 临时与永久关闭 swap:
- 防火墙与安全组:测试环境可关闭防火墙
sudo systemctl stop firewalld & & sudo systemctl disable firewalld;生产环境按需放行端口(如 6443、10250、10251、10252、2379/2380、8472/4789 UDP 等,取决于网络插件与控制面组件)。 - 容器运行时:安装 Docker CE(或 containerd),并启动:
sudo systemctl start docker & & sudo systemctl enable docker。 - 安装 kubeadm/kubelet/kubectl(所有节点):
- 添加仓库(国内可用镜像源加速):
cat < < EOF | sudo tee /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-\$basearch/ enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF - 安装并启用:
sudo yum install -y kubelet kubeadm kubectl --disableexcludekubernetes & & sudo systemctl enable --now kubelet
以上准备可显著降低后续初始化与网络插件安装时的故障率。
- 添加仓库(国内可用镜像源加速):
二 使用 kubeadm 初始化集群
- 拉取镜像(可选,提前缓存):
sudo kubeadm config images pull --image-repository registry.aliyuncs.com/google_containers(如网络受限,可指定国内镜像仓库)。 - 初始化控制平面(示例):
说明:sudo kubeadm init \ --apiserver-advertise-address=< MASTER_IP> \ --image-repository registry.aliyuncs.com/google_containers \ --kubernetes-version=v1.22.15 \ --service-cidr=10.96.0.0/12 \ --pod-network-cidr=10.244.0.0/16--pod-network-cidr需与所选 CNI 插件一致(如 Flannel 默认 10.244.0.0/16,Calico 常见 192.168.0.0/16)。- 初始化成功后,控制台会输出
kubeadm join ...命令,务必保存。
- 配置 kubectl(普通用户):
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config - 安装 CNI 网络插件(二选一,按上一步的 Pod CIDR 选择):
- Flannel:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml - Calico:
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
- Flannel:
- 验证:
kubectl get nodes应看到 master 状态为 Ready;kubectl get pods -A核心组件与网络插件 Pod 均为 Running。
三 加入 Worker 节点
- 在 Master 上生成加入命令(若初始化输出已过期):
kubeadm token create --print-join-command - 在 Worker 节点执行输出的
kubeadm join ... --token < TOKEN> --discovery-token-ca-cert-hash sha256:< HASH>。 - 回到 Master 验证:
kubectl get nodes,等待新节点变为 Ready。 - 常见问题排查要点:
- 节点时间不同步(启用 chrony 同步)。
- 防火墙/安全组未放行必要端口。
- 容器运行时未就绪(
systemctl status docker/crictl ps)。 - Pod CIDR 与 CNI 配置不一致(导致节点 NotReady)。
四 快速验证与常见问题处理
- 快速连通性验证:
kubectl run nginx --image=nginx:1.25 --port=80 --restart=Never kubectl expose deployment nginx --type=NodePort --port=80 kubectl get svc nginx # 获取 NodePort curl http://< 任一节点IP> :< NodePort> - 常见问题速解:
- 节点 NotReady:检查 CNI 是否安装、Pod CIDR 是否匹配、节点是否 Ready。
- 镜像拉取失败:使用国内镜像仓库或提前
kubeadm config images pull。 - kubectl 权限错误:确认 $HOME/.kube/config 来自
admin.conf且属主正确。 - kubelet 启动失败:查看
journalctl -xeu kubelet,常见为 cgroup 驱动不一致(Docker 默认 cgroupfs,kubelet 常用 systemd,需统一)。
五 单机与替代方案
- 仅学习/测试可用 Minikube(本机部署,快速上手):
适合快速验证或在资源受限环境下体验 Kubernetes。curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 & & chmod +x minikube & & sudo mv minikube /usr/local/bin/ sudo minikube start --driver=none minikube status
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何顺利在centos上安装k8s
本文地址: https://pptw.com/jishu/781395.html
