您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# CentOS7系统部署K8s集群的示例分析
## 前言
Kubernetes(简称K8s)作为当前最流行的容器编排平台,已成为企业级容器化应用部署的事实标准。本文将详细介绍在CentOS7操作系统上部署Kubernetes集群的全过程,包括环境准备、组件安装、集群初始化和应用部署等关键步骤,并针对常见问题提供解决方案。
---
## 一、环境准备
### 1.1 系统要求
- **操作系统**:CentOS 7.6及以上(推荐7.9)
- **硬件配置**:
- Master节点:2核CPU/4GB内存/20GB磁盘
- Worker节点:1核CPU/2GB内存/15GB磁盘
- **网络要求**:
- 节点间网络互通
- 关闭防火墙或开放6443、2379-2380等端口
### 1.2 节点规划
| 主机名 | IP地址 | 角色 |
|------------|-------------|--------------------|
| k8s-master | 192.168.1.10 | Master + Etcd |
| k8s-node1 | 192.168.1.11 | Worker |
| k8s-node2 | 192.168.1.12 | Worker |
### 1.3 基础环境配置
```bash
# 所有节点执行
# 1. 关闭SELinux
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
# 2. 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
# 3. 配置主机名解析
cat >> /etc/hosts <<EOF
192.168.1.10 k8s-master
192.168.1.11 k8s-node1
192.168.1.12 k8s-node2
EOF
# 4. 禁用swap
swapoff -a
sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
# 所有节点执行
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce-20.10.7 docker-ce-cli-20.10.7
systemctl enable docker && systemctl start docker
# 所有节点执行
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
yum install -y kubelet-1.22.3 kubeadm-1.22.3 kubectl-1.22.3
systemctl enable kubelet
# 仅在Master节点执行
kubeadm init \
--apiserver-advertise-address=192.168.1.10 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.22.3 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16
# 成功后会输出join命令,类似:
kubeadm join 192.168.1.10:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
# 在每个Worker节点执行前面输出的join命令
kubeadm join 192.168.1.10:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
验证集群状态:
kubectl get nodes
# 预期输出
NAME STATUS ROLES AGE VERSION
k8s-master Ready control-plane,master 10m v1.22.3
k8s-node1 Ready <none> 5m v1.22.3
k8s-node2 Ready <none> 5m v1.22.3
# nginx-deploy.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:1.19
ports:
- containerPort: 80
kubectl apply -f nginx-deploy.yaml
kubectl expose deployment nginx-deployment --port=80 --type=NodePort
kubectl get svc
# 访问测试(假设NodePort为31234)
curl http://<任意节点IP>:31234
[kubelet-check]
阶段
journalctl -xeu kubelet # 查看日志
systemctl restart kubelet
kubectl describe pod <pod-name>
kubectl logs <pod-name> [-c <container-name>]
calico-node
DaemonSet日志
kubectl logs -n kube-system -l k8s-app=calico-node
定期备份:
# 备份etcd数据
kubectl exec -n kube-system etcd-k8s-master -- sh -c 'ETCDCTL_API=3 etcdctl snapshot save /snapshot.db'
版本升级:
yum list --showduplicates kubeadm --disableexcludes=kubernetes
kubeadm upgrade plan
节点维护:
kubectl drain <node-name> --ignore-daemonsets
kubectl delete node <node-name>
本文详细演示了在CentOS7上部署生产级Kubernetes集群的全流程。实际环境中还需考虑: - 高可用架构(多Master+负载均衡) - 持久化存储方案(如NFS/CEPH) - 监控系统(Prometheus+Grafana) - 日志收集(EFK Stack)
注:本文示例基于K8s v1.22.3版本,其他版本可能需调整参数。建议参考官方文档获取最新指南。 “`
(全文约4200字)
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。