在 CentOS 7 上安装 Kubernetes 集群详细教程(含常用命令)



一、环境准备

1. 操作系统版本确认

  • 本文基于 CentOS Linux 7 (Core) 进行安装
cat /etc/os-release

2. 关闭防火墙和交换分区(swap)

# 关闭防火墙(生产环境建议配置安全组代替)
systemctl stop firewalld && systemctl disable firewalld

# 关闭 SELinux(临时关闭)
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

# 关闭交换分区(swap),k8s 要求关闭交换分区
swapoff -a
sed -i '/swap/d' /etc/fstab

3. 配置系统内核参数(k8s 网络所需)

cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system

二、安装 Container Runtime(containerd)

Kubernetes 1.20+ 官方推荐 containerd,性能和稳定性更好。

1. 安装 containerd

yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y containerd.io

2. 配置 containerd

mkdir -p /etc/containerd
containerd config default > /etc/containerd/config.toml

你可以编辑 /etc/containerd/config.toml 调整配置(通常默认即可)。

3. 启动并开启 containerd

systemctl enable --now containerd
systemctl status containerd

三、安装 Kubernetes 组件(kubeadm、kubelet、kubectl)

1. 添加 Kubernetes yum 源

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
EOF

2. 安装 Kubernetes 三大组件

yum install -y kubelet kubeadm kubectl

3. 启动 kubelet 并设置开机启动

systemctl enable --now kubelet
systemctl status kubelet

四、初始化 Kubernetes 集群

注意:初始化时 kubeadm 会自动拉取 Kubernetes 所需镜像,如果网络不佳,可能会卡住或失败。推荐提前手动拉取镜像,或使用国内镜像加速。

1. 手动拉取镜像(官方镜像地址较慢)

kubeadm config images pull --cri-socket unix:///run/containerd/containerd.sock

如果无法拉取,可参考阿里云、网易等国内镜像仓库地址,使用 ctr 手动拉取。

2. 初始化集群

kubeadm init --pod-network-cidr=10.244.0.0/16 --cri-socket unix:///run/containerd/containerd.sock
  • --pod-network-cidr=10.244.0.0/16 是为了后续使用 Flannel 网络插件,如果你用其他插件请对应调整。
  • --cri-socket 指定 containerd 的 socket。

3. 配置 kubectl 使用权限

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

五、部署 Pod 网络插件(以 Flannel 为例)

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

等待网络插件部署完成,所有节点状态变为 Ready。


六、查看集群状态

kubectl get nodes
kubectl get pods -A

七、常用 Kubernetes 命令整理

1. 节点管理

kubectl get nodes                 # 查看节点状态
kubectl describe node <node-name> # 查看节点详细信息
kubectl cordon <node-name>       # 标记节点不可调度
kubectl uncordon <node-name>     # 标记节点可调度
kubectl drain <node-name>        # 驱逐节点上的 Pod,准备维护

2. Pod 和服务管理

kubectl get pods -A              # 查看所有命名空间的 Pod
kubectl get pods                 # 查看当前命名空间 Pod
kubectl describe pod <pod-name> # 查看 Pod 详细信息
kubectl logs <pod-name>          # 查看 Pod 日志
kubectl exec -it <pod-name> -- bash  # 进入 Pod 容器终端

3. 部署与管理应用

kubectl apply -f <filename.yaml>   # 创建或更新资源
kubectl delete -f <filename.yaml>  # 删除资源
kubectl rollout status deployment/<deployment-name>  # 查看滚动更新状态
kubectl scale deployment/<name> --replicas=3          # 扩缩容

4. 集群信息查看

kubectl cluster-info              # 查看集群信息
kubectl get namespaces            # 查看命名空间列表
kubectl get svc                   # 查看服务

八、排查及常见问题

1. kubeadm 初始化卡镜像拉取

  • 检查网络是否能访问 Google Container Registry
  • 使用国内镜像加速,或者手动用 ctr 拉取镜像
  • 可以尝试跳过镜像拉取阶段,先把镜像准备好

2. kubectl 连接失败

  • 确认 $HOME/.kube/config 是否正确配置
  • 确认 kubelet 和控制平面容器正常运行

总结

通过以上步骤,你可以在 CentOS 7 系统上搭建一个基础的 Kubernetes 集群。
后续根据需求,可添加更多节点、安装 Dashboard、配置持久化存储、Ingress 控制器等。


如果你需要,我也可以帮你写一份脚本自动化安装,或者帮你分析具体卡住的问题,随时告诉我!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值