阶段五:Kubernetes 容器编排之企业级集群部署

为什么需要Kubernetes容器编排

传统部署存在的问题

环境一致性差

扩展性差

资源利用率低

部署与升级复杂

运维成本高

故障恢复能力弱

依赖关系复杂

总结来说,传统部署灵活性低、运维复杂、扩展困难、可靠性差,很难满足现代业务对高可用、弹性和快速迭代的要求。

Kubernetes 容器编排部署优势

① 自动化部署和发布

② 弹性伸缩

③ 高可用性

④ 资源利用率优化

⑤ 服务发现和负载均衡

⑥ 配置和密钥管理

⑦ 多环境一致性

⑧ 依赖管理和微服务编排

存储管理(Persistent Storage)

Kubernetes 概述

什么是 Kubernetes

它最初由 Google 开发,并由 Cloud Native Computing Foundation(CNCF)维护

核心功能

Kubernetes 架构图

架构图

image

Kubernetes 核心组件(死记硬背必考题)

① 控制平面组件(Control Plane)

控制整个集群的大脑,负责调度、管理和协调。

<sheet sheet-id="2QMXDv" token="S98xsby2Hh77HktkzdQcn2jzn2c"></sheet>

② 工作节点组件(Node Components)

运行实际应用容器的地方。

③ 其他常见附加组件(Add-ons)

增强集群功能,通常在生产环境必备。

Calico: 提供网络和网络策略(Network Policy),性能强大,支持 BGP。

Flannel: 简单易用的 overlay 网络,提供最基本的网络功能。

Cilium: 基于 eBPF,提供高性能网络、可观测性和安全策略。

Kubernetes 集群安装部署

控制面板单MASTER集群(测试环境)

硬件规划

IP地址角色用途
192.168.88.170master01(2核2G)控制平面
192.168.88.171worker01(2核2G)工作节点
192.168.88.172worker02(2核2G)工作节点

所有主机操作系统环境准备

#所有节点都要设置主机名
hostnamectl set-hostname master01
su

# 打开主机名文件,把master01、worker01、work02添加上
vim /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.88.170  master01
192.168.88.171  worker01
192.168.88.172  worker02
192.168.88.170  lb.heimak8s.com

# 永久关闭 SELinux,需要编辑配置文件
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

# 停止 firewalld 服务,禁止 firewalld 服务开机自启
systemctl stop firewalld
systemctl disable firewalld

# 安装 iptables 和 iptables-services,清空 iptables 规则并保存
dnf install iptables iptables-services -y
iptables -F
iptables -X
iptables -Z
iptables -P INPUT ACCEPT 
iptables -P FORWARD ACCEPT 
iptables -P OUTPUT ACCEPT
# 保存规则
iptables-save

# 所有节点时间同步
dnf -y install chrony
systemctl enable chronyd --now

# 加载 br_netfilter 和 overlay 内核模块
modprobe br_netfilter
modprobe overlay
cat <<EOF | tee /etc/sysctl.d/k8s.conf > /dev/null
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward                 = 1
EOF
echo "br_netfilter" | tee /etc/modules-load.d/k8s.conf
# 生效命令
sysctl --system

# 临时关闭交换区(非常重要)
swapoff  -a 

#永久关闭交换区
sed -i 's/.*swap.*/#&/g' /etc/fstab
reboot

命令作用:

执行结果:

关键参数:

注意事项:





metadata:
spec:
  containers:
    ports:
    volumeMounts:
  volumes:
    hostPath:

 #配置nginx四层负载均衡nginx.conf

}
    }


    }
}

#重启kubelet服务

查看6443端口是否处在监听的状态

注意事项:


**注意事项:**






















**镜像拉取失败**


**容器异常退出**






https://kuboard.cn/install/v3/install-built-in.html#%E9%83%A8%E7%BD%B2%E8%AE%A1%E5%88%92

#在master01节点上面安装docker-ce

#安装完进行验证是否安装成功

注意事项:

默认用户名:admin,密码:Kuboard123

image
image
image

从master主控节点上面复制集群的连接信息


**注意事项:**







![](/assets/feishu-images/b54d1d6aefcfacb04627242a.png)

可以切换成中文,查看文档。

![](/assets/feishu-images/df6cc430c4721895fa884fdf.png)



准备一套K8s集群,可以是一主多从,也可以是三主多从。这里,我们以一主二从为例,在上面安装Rancher,实现集群的后台管理。

| IP地址 | 角色 | 用途 |
|---|---|---|
| 192.168.88.135 | master | 控制平面 |
| 192.168.88.136 | worker01 | 工作节点 |
| 192.168.88.137 | worker02 | 工作节点 |

IP地址、主机名不需要完全照抄,改成自己的即可。

注意事项:


**注意事项:**



metadata:
  labels:
metadata:
  labels:
metadata:
  labels:
metadata:
  labels:
rules:
  resources:
  verbs:
  resources:
  verbs:
  resources:
  verbs:
  resources:
  verbs:
  resources:
  verbs:
  resources:
  verbs:
  resourceNames:
  resources:
  verbs:
  resources:
  verbs:
  resources:
  verbs:
  resources:
  verbs:
metadata:
  labels:
rules:
  resources:
  verbs:
metadata:
  labels:
rules:
  resources:
  verbs:
  resources:
  verbs:
  resources:
  verbs:
  resources:
  verbs:
  resources:
  verbs:
  resources:
  verbs:
  resources:
  verbs:
  resources:
  verbs:
  resources:
  verbs:
metadata:
  labels:
rules:
  resources:
  verbs:
metadata:
  labels:
roleRef:
subjects:
metadata:
  labels:
roleRef:
subjects:
metadata:
  labels:
roleRef:
subjects:
metadata:
  labels:
roleRef:
subjects:
metadata:
  labels:
metadata:
  labels:
spec:
  ipFamilies:
  ports:
  selector:
metadata:
  labels:
spec:
  ports:
  selector:
metadata:
  labels:
spec:
  selector:
    matchLabels:
  strategy:
    rollingUpdate:
  template:
    metadata:
      labels:
    spec:
      containers:
        env:
          valueFrom:
            fieldRef:
          valueFrom:
            fieldRef:
        lifecycle:
          preStop:
            exec:
              command:
        livenessProbe:
          httpGet:
        ports:
        readinessProbe:
          httpGet:
        resources:
          requests:
        securityContext:
          capabilities:
            add:
            drop:
          seccompProfile:
        volumeMounts:
      nodeSelector:
      volumes:
        secret:
metadata:
  labels:
spec:
  template:
    metadata:
      labels:
    spec:
      containers:
        env:
          valueFrom:
            fieldRef:
        securityContext:
          capabilities:
            drop:
          seccompProfile:
      nodeSelector:
metadata:
  labels:
spec:
  template:
    metadata:
      labels:
    spec:
      containers:
        env:
          valueFrom:
            fieldRef:
        securityContext:
          capabilities:
            drop:
          seccompProfile:
      nodeSelector:
metadata:
  labels:
spec:
metadata:
  labels:
webhooks:
  clientConfig:
    service:
  rules:
    apiVersions:
    operations:
    resources:

注意事项:


**注意事项:**

注意事项:


**注意事项:**

注意事项:


**注意事项:**

注意事项:

这里需要手动加上。


**注意事项:**


注意事项:


**注意事项:**

注意事项:


**注意事项:**



![](/assets/feishu-images/6346216628f5bb3fe2208d1f.png)

![](/assets/feishu-images/f475621850067531bc44a0f6.png)




![](/assets/feishu-images/d8914454e9a4ea755dd1a980.png)

![](/assets/feishu-images/a0b6d5df2ccf70fde9f8c625.png)

![](/assets/feishu-images/a518d1070c36e1a3a54c895d.png)

![](/assets/feishu-images/ecfc694fcbb9c0fc455fbcf2.png)

点击会自动拷贝,保存生成的添加命令


说明:

注意事项:

当访问域名时,提示 解决办法:把服务端的证书机构,添加到本地客户端的信任列表里。


**注意事项:**

注意事项:


**注意事项:**

注意事项:

分发完成,更新客户端本地的信任列表库


**注意事项:**



![](/assets/feishu-images/bcbb2ac7997d9c7e719a2159.png)

验证测试

注意事项:


**注意事项:**





注意事项:


**注意事项:**

注意事项:

image

回到页面上,集群也被纳管进来了

image
image

Rancher部署,涉及了 Helm、Ingress、CoreDNS、自签证书 等知识点。 其中,关于自签证书,不作为本节的重点,只需要了解即可。后面安全专题会进一步介绍。