sudo systemctl stop firewalld && sudo systemctl disable firewalld;sudo setenforce 0,并修改配置文件/etc/selinux/config中的SELINUX=disabled;sudo swapoff -a,并注释/etc/fstab中的swap行;k8s-master、k8s-worker1)并通过/etc/hosts文件配置节点间域名解析。Kubernetes依赖Docker作为容器运行时(也可选择containerd,但Docker更常用)。
sudo yum install -y yum-utils device-mapper-persistent-data lvm2 net-tools;sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo;sudo yum install -y docker-ce docker-ce-cli containerd.io;sudo systemctl start docker && sudo systemctl enable docker;docker --version(应输出Docker版本信息)。/etc/yum.repos.d/kubernetes.repo文件,内容如下:[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
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
sudo yum install -y kubelet kubeadm kubectl;sudo systemctl enable kubelet && sudo systemctl start kubelet。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 \
--ignore-preflight-errors=all
(注:<Master-IP>替换为Master节点的实际IP;--ignore-preflight-errors=all用于忽略部分兼容性问题,生产环境需谨慎使用。)kubeadm join ...),需妥善保存。mkdir -p $HOME/.kube;sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config;sudo chown $(id -u):$(id -g) $HOME/.kube/config;kubectl version --client(应显示客户端版本,且无报错)。Kubernetes需要网络插件实现Pod间通信,常用Flannel(轻量级)或Calico(功能丰富)。
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubectl get pods -n kube-system(所有Pod应处于Running状态)。sudo kubeadm join 192.168.1.100:6443 \
--token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
kubectl get nodes(所有节点应显示为Ready);kubectl get pods --all-namespaces(所有Pod应处于Running状态)。方式1:使用YAML文件部署(推荐)
nginx-deployment.yaml:apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3 # 副本数
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest # 镜像
ports:
- containerPort: 80 # 容器端口
nginx-service.yaml(暴露服务):apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80 # Service端口
targetPort: 80 # Pod端口
type: NodePort # 类型(NodePort允许外部访问)
kubectl apply -f nginx-deployment.yaml
kubectl apply -f nginx-service.yaml
方式2:使用kubectl命令快速部署(测试用)
kubectl create deployment nginx --image=nginx --replicas=3
kubectl expose deployment nginx --port=80 --type=NodePort
验证部署:
kubectl get pods(应显示3个Running的Nginx Pod);kubectl get svc(记录nginx-service的NodePort,如30080);http://<Master-IP>:30080(应显示Nginx欢迎页面)。通过以上步骤,即可在CentOS上完成Kubernetes集群的部署,并运行容器化应用。生产环境中还需配置持久化存储(如PV/PVC)、监控(如Prometheus)、日志(如ELK)等功能,以提升集群的可靠性和可维护性。