一、环境准备:系统配置与依赖安装
在CentOS上部署Kubernetes前,需完成基础环境配置,确保系统符合Kubernetes的要求:
systemctl stop firewalld && systemctl disable firewalld # 关闭防火墙
setenforce 0 && sed -i 's/SELINUX=.*/SELINUX=disabled/' /etc/selinux/config # 禁用SELinux
swapoff -a && sed -i '/swap/s/^/#/' /etc/fstab # 关闭交换分区(Kubernetes要求)
/etc/sysctl.d/k8s.conf文件,添加以下内容并应用:net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
sysctl --system
conntrack、ipvsadm、jq等Kubernetes依赖工具:yum install -y conntrack ipvsadm ipset jq iptables curl sysstat libseccomp wget vim net-tools git
二、容器运行时安装:选择高效运行时
Kubernetes推荐使用containerd作为容器运行时(性能优于Docker,且原生支持Kubernetes):
/etc/modules-load.d/containerd.conf文件,加载必要内核模块:echo -e "overlay\nbr_netfilter" > /etc/modules-load.d/containerd.conf
modprobe overlay && modprobe br_netfilter # 立即加载模块
yum install -y containerd.io
systemctl enable --now containerd
/etc/containerd/config.toml,启用cgroups v2(CentOS 8+默认使用)和镜像加速:ctr config dump > /etc/containerd/config.toml # 生成默认配置
sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml # 启用cgroups v2
systemctl restart containerd
三、Kubernetes组件安装:使用kubeadm快速部署
kubeadm是Kubernetes官方推荐的集群部署工具,可简化Master节点和Worker节点的初始化流程:
/etc/yum.repos.d/kubernetes.repo文件,配置官方镜像源:cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
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
yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
systemctl enable --now kubelet
四、集群初始化:Master节点部署
kubeadm init命令初始化集群,指定Pod网络CIDR(需与后续网络插件兼容,如Flannel的10.244.0.0/16):kubeadm init --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=<Master_IP>
初始化完成后,记录输出的kubeadm join命令(用于Worker节点加入)。mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
五、网络插件安装:实现Pod间通信
Kubernetes需要网络插件实现Pod跨节点通信,推荐使用轻量级的Flannel:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
等待网络插件部署完成(可通过kubectl get pods -n kube-system查看Pod状态,需全部为Running)。
六、Worker节点加入:扩展集群规模
在每个Worker节点上执行Master节点初始化时输出的kubeadm join命令,例如:
kubeadm join 192.168.1.100:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
加入后,Master节点执行kubectl get nodes,若Worker节点状态变为Ready,则说明加入成功。
七、应用部署:高效发布K8s应用
requests(最低资源需求)和limits(最大资源限制),避免资源争抢:resources:
requests:
memory: "64Mi"
cpu: "250m"
limits:
memory: "128Mi"
cpu: "500m"
FROM alpine:latest
RUN apk add --no-cache nginx
CMD ["nginx", "-g", "daemon off;"]
kubectl apply命令部署应用(以Nginx为例):kubectl apply -f nginx-deployment.yaml # Deployment定义
kubectl apply -f nginx-service.yaml # Service定义(暴露服务)
kubectl get pods -w # 查看Pod状态(需为Running)
kubectl get svc # 查看Service状态(若有External IP,可直接访问)
八、优化与维护:提升部署效率与稳定性
kubectl rollout undo命令快速回滚到上一版本(如kubectl rollout undo deployment/nginx-deployment)。yum update kubelet kubeadm kubectl)和容器镜像(拉取最新版本),修复安全漏洞并提升性能。