centos7系统部署k8s集群的示例分析

发布时间:2021-12-15 17:07:08 作者:柒染
来源:亿速云 阅读:212
# 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

二、安装容器运行时与K8s组件

2.1 安装Docker

# 所有节点执行
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

2.2 安装Kubernetes组件

# 所有节点执行
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节点

3.1 使用kubeadm初始化

# 仅在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

3.2 配置kubectl

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

3.3 安装网络插件(Calico)

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

四、加入Worker节点

# 在每个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

五、部署测试应用

5.1 创建Nginx Deployment

# 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

5.2 暴露Service

kubectl expose deployment nginx-deployment --port=80 --type=NodePort
kubectl get svc
# 访问测试(假设NodePort为31234)
curl http://<任意节点IP>:31234

六、常见问题与解决方案

6.1 kubeadm init卡住

6.2 Pod状态异常

6.3 网络插件问题


七、集群维护建议

  1. 定期备份

    # 备份etcd数据
    kubectl exec -n kube-system etcd-k8s-master -- sh -c 'ETCDCTL_API=3 etcdctl snapshot save /snapshot.db'
    
  2. 版本升级

    yum list --showduplicates kubeadm --disableexcludes=kubernetes
    kubeadm upgrade plan
    
  3. 节点维护

    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字)

推荐阅读:
  1. CentOS7系统部署安装Tomcat服务(理论+实战)
  2. centos7 k8s集群部署

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

centos k8s

上一篇:Pygame实现监听鼠标的示例分析

下一篇:Linux sftp命令的用法是怎样的

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》