• 手把手教你搭建K8S集群


    搭建前提条件:VMare16pro   CentOS-7-x86_64-DVD-2009.iso镜像文件, 远程连接工具Xshell或者MobaXterm

    首先创建三台centos7的虚拟机,装虚拟机的话大家可以参照网上资料,非常容易。

    使用 kubeadm 安装 Kubernetes 集群

    1 系统环境配置 

    在各主机节点上均需要配置。 

    (1)查看当前系统的内核版本,以及主机名是否符合配置要求管理节点

    be68330613424c9d8e3196b105c61e04.png

     工作节点 1:

    b6ddb9596d3a4946997b2a40f5a9d055.png

     工作节点 2

    5676ef3ab5ca43e9a9d4eb4000154eca.png

        各主机当前系统的内核版本均为 Linux 3.10.0-1160.62.1.el7.x86_64,而且主机名也符合配置要求。 

    (2)升级当前系统的内核(不升级内核不支持 ipvlan,有些网络会有问题! )

       1.导入公钥 public key

    2f27d9636bc94f7f86814803f8b38d02.png

     2.安装 epel 源

    d2ef2a5d57714f60bb9ef0dbf56df8a6.png

    3.查看可用版本的内核

     3d7a5b108c574ff49a297a07cf45a9b5.png

    1. yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
    2. --disablerepo="*":禁用所有 repo 配置文件
    3. --enablerepo="elrepo-kernel":仅使用仓库名为 elrepo-kernel 的配置文件 kernel-ml 中的 ml 是 main line stable 的缩写,elrepo-kernel 中罗列出来的是最新的稳定主线版本。
    4. kernel-lt 中的 lt 是 long term support 的缩写,elrepo-kernel 中罗列出来的长期支持版本。

    4. 选择安装 ml 最新版本的内核 

    2cfa4e9a3f54462c859902e5cd984477.png

    5.查看系统上可以用的内核顺序

     ebeb3164ad6b48e3ade73868841951f1.png

     注意:前面的 0、1、2 等代表编号

    6.设置默认启动内核

    724820c3e62d419e802c63f01a580fb9.png

    7. 重启并查看内核升级情况管理节点:

    5b2f1d49ef84435880fa09c94dee6eaa.png

     工作节点 1:

    cd00400d65204517a618fd24bd611f7c.png

     工作节点 2:

    636b79b2a75048d7a59742486f55b15d.png

    (3) 检查是否已关闭防火墙及禁用 SELinux

    299007daf80e46baa11b431538b4da4e.png

    工作节点1

    743337d09a234f18aec50f7a30e7c479.png

     工作节点2

    201c8f8b6e2545aba0100a05aa27cd69.png

     各主机系统均已关闭防火墙并禁用 SELinux。

    (4)配置主机映射

    3f2c2d36ee704b23bd046b9333a99db0.png

     将/etc/hosts 复制到其他主机节点。

    492ef323cb984cfbb922c2fc9b31bd4d.png

    ping各个主机的隐射host

    b3dd42281677469699b7a048a3b2f04b.png

     说明主机映射配置成功!

     (5)配置时间同步

    在各主机上进行时钟同步,时钟同步服务器可自行配置,此处选择阿里云的时钟服务器。

    管理节点:

    80f227eeed104797acd2b4ec2aac7b1e.png

     工作节点 1

    c5478aac3c6b48b6b1fd4570a0ea2349.png

     工作节点 2:

    18fe33c38191468695087e630a3e126d.png

     检查系统是否已安装 ntpdate 软件包,若未安装,则可以执行“yum -y install ntpdate”命令进行安装。

    (6)关闭 swap 分区

    在所有节点上均要关闭 swap。

    管理节点: 

    5c901643527942ca9860e1ed4355d524.png

     工作节点 1:

    d2efa393b10c4d10988ae89866dc8b05.png

     工作节点 2:

    3872de70b55d4457b8ebaf929fc7b476.png

     (7)配置免密登录

    在本地主机上使用 ssh-keygen 产生公钥私钥对。

    4620aa1e7f3446d6bff29ef185f85cbc.png

     

    执行 ssh-kengen 命令后会在~/.ssh/目录下生成两个文件:id_rsa 和 id_rsa.pub,第一个是私钥文件,第二个是公钥文件。 

    使用 ssh-copy-id 命令将公钥复制到远程主机上。 

    8d24fd310f224808b1c0b1d1920253e8.png

    (8)配置内核参数

    开启 IP 转发,并允许 iptables 对 bridge 流量进行处理。 

    管理节点:

    36c2035c98a247f8b695eb7444367abe.png

     工作节点 1:

    6d0e7773a03e43e98af9d3feb16ba7a4.png

     工作节点 2:

    caebbd2f096b414b99af6e22a0958ad9.png

     接下来就是配置yum源了

     检查并配置yum源

    若下面有的源已配置,则可以略过相应的操作!首先,配置管理节点的yum源:

    -1.检查 CentOS 7 本地 YUM 源是否已配置

    1734982a36e7473e93d97ec9af75fc26.png

     若未配置 CentOS 7 本地 YUM 源,则需要先行配置。

    -2.检查 wget 下载工具是否安装

    abf33bca36ec4fabac384e98dd3a81d5.png

     若未安装 wget 工具,则使用 yum -y install wget 命令进行安装。

    -3.下载 CentOS 7 阿里源并配置

    下载 CentOS 7 阿里源 http://mirrors.aliyun.com/repo/Centos-7.repo,注意区分大小写。

    547bb2b7adb441bd8a9619ddafa93884.png

     将 CentOS 7 源文件 CentOS-Base.repo 中的 mirrors.cloud.aliyuncs.com 全部替换为 mirrors.aliyun.com

    -4.下载 Docker 阿里源

    e10453456c7d48ff8e59791a3e6b07dc.png

     -5.配置 Kubernetes 阿里源

    db73da4488804ece91f0b2b6b27c0305.png

     b538c97b4ce74795805356d05721347b.png

     其次,配置各工作节点的 YUM 源:将管理节点的 YUM 源配置文件复制到各工作节点的相应位置

    193e61cf482d43c9986614ec714a9392.png

     c678c5ea999149f182077855ae396c73.png

     702e56b9b61740d6a4796890472ac589.png

     fb3d6c4d478949a884dcec28155822f0.png

     (9)检查 Docker 服务是否安装管理节点

    0581c2f6914e4594888128b394037ee9.png

     当前系统已安装 Docker 服务,且已配置阿里云加速器。若未安装,则使用“yum -y install docker-ce”命令进行安装。

    各个工作节点

    c9fc8b05815d495195e05b74300d9492.png

     7d24c7d1edd044c5aadcc84fd6c39707.png

     (10)修改docker文件驱动

    管理节点:

    9127bfe587d4453fb594a27cbeab4aa2.png

     2056656eddfa4d30965905b165f9620f.png

     各工作节点:

    635c0f0dc4e84c38affd3d2ff963de3e.png

     d7bec643de75456989e901be7cf34f72.png

     d7241cb476a94473a2f15ff8c0e4449d.png

     

    系统配置结束

     2.安装kubeadm、kubectl、kubelet

    (1)查看 kubernetes 版本登录官网(https://v1-23.docs.kubernetes.io/releases/)查看 kubernetes 最近版本。

    a47f11e121c04f28b43f3988d91bc64d.png

     这里以 kubernetes 1.23.5 版本为例安装说明。

    (2)在所有节点上安装 kubeadm、kubectl、kubelet,并设置开机自动启动 kubelet 服务

    -1.在管理节点 master200250229 节点上执行

    65dd013941ce4938856c14c523702ec5.png

    262aceb30d724477a7e42719f12a5443.png

     -2.在工作节点 node200250229-1 节点上执行

    3b61f8a948734036af9d8747e63103f0.png

    826a7447a41341f095b48d3dad33c61b.png

    4fa24041a12047768af7f5223380b839.png

     -3.在工作节点 node200250229-2 节点上执行

    5eeac15f5b6742a3a997f6d6d84fbb4a.png

    2e95c42de06a44fb94acb5e396885d2d.png

     (3)kubectl 和 kebuadm 命令 Tab 键补齐 kubectl 和 kebuadm 命令 Tab 键补齐,默认不补齐。管理节点:

    1a50475fc623473bbb973c475eece365.png

     退出当前终端生效。各工作节点:

    c2beea5c730e4845858aedca80791558.png

    e67e3f57829e4bf98aa7b484ac1f84d5.png

     3.Kubernetes 集群初始化

    在 master200250229 节点主机上使用 kubeadm 初始化 Kubernetes 集群

    543bd45486df47eba20941f5d9abdcd2.png db96911fbdbc4ae3914ca710af6213b6.png

     

    1. kubeadm init --kubernetes-version=1.23.5 \
    2. --apiserver-advertise-address=172.16.0.100 \
    3. --image-repository registry.aliyuncs.com/google_containers \
    4. --pod-network-cidr=10.244.0.0/16
    5. 参数说明如下:
    6. --kubernetes-version:用于指定 k8s 版本;
    7. --apiserver-advertise-address:用于指定 kube-apiserver 监听的 ip 地址,就是 master 节点主机 IP 地址;
    8. --image-repository:指定阿里云镜像仓库地址;
    9. --service-cidr:用于指定 SVC 的网络范围;
    10. --pod-network-cidr:用于指定 Pod 的网络范围。其中,10.244.0.0/16 为 Flannel 网络的默认网段。
    11. 将最后面的 kubeadm join 命令内容保存下来,工作节点加入到集群中时需要用到此命令。

    4.节点加入 Kubernetes 集群

    将 node200250229-1、node200250229-2 节点主机加入 Kubernetes 集群

    ba39cd32686644e38eb501cd6dbb07ef.png

    98f82c6252d14aec922f27aa982ce55f.png5 配置访问 Kubernetes 集群 

    (1)配置管理节点访问集群

    4bbf11d10fbd48639b26ec0b4e4c7783.png

     集群状态为未就绪(NotReady),说明当前集群尚未安装网络插件。

    (2)配置工作节点访问集群

    e8fe34ed078c44bab8a43e07eeb8d305.png

    d35d3638d8ea4b34a3526e7329da1b3b.png

     348bf7f47dec44ae8824242ab7574160.png

     6. 部署 flannel 网络插件

    (1)安装 flannel 网络插件

    只需要在 master200250229 管理节点上安装网络插件,。

    3c3b0987e52c482ba4a117a86d23550f.png

     8c048434f62a4bb98f51c32a9de7b76d.png

     过了一会儿,在各节点上执行“kubectl get nodes”命令查看节点状态。

    3bbe8f8961f34f8cbf49838ec1ffbc0f.png

     210db45a3658443d88774a874425b3b1.png

     8a514eaba15c4bc1ae92b587f0efa1b3.png

    (2)查看flannel网络信息

     管理节点: 

    b1b15968ba5843b0bfafad312ac6ef49.png

     各工作节点:

    1412bac7c1a84ae9a2488ebf8eb76df9.png

     1909b855cc4747e2bc2e233c77974a53.png

     

    VXLAN 是 Flannel 默认和推荐的模式。当我们使用默认配置安装 Flannel 时,它会为每个节点分配一个

    24 位子网,并在每个节点上创建两张虚机网卡:cni0 和 flannel.1。cni0 是一个网桥设备,类似于 docker0,

    节点上所有的 Pod 都通过 veth pair 的形式与 cni0 相连。flannel.1 则是一个 VXLAN 类型的设备,充当 VTEP

    (VXLAN Tunnel Endpoints,VXLAN 隧道端点)的角色,实现对 VXLAN 报文的封包解包。

    (3)查看集群状态

    -1查看组件状态

    5ebd08b3c04246b0a0641bb0b948a609.png

     -2.查看资源对象

    374030e8aee34425907755ac343b724f.png

     03947598a7f34f13a3d12ff6de9fd500.png

     注意:使用 kubectl get pod -n kube-system 命令查看集群状态,可能会出现 Pending、ContainerCreating、CrashLoopBackOff、Error、Init:ImagePullBackOff 等异常信息,原因可能内核版本较低、镜像拉取失败等。

    7.部署 Dashboard 管理工具Dashboard 是基于网页的 Kubernetes 用户界面。您可以使用 Dashboard 将容器应用部署到Kubernetes集群中,也可以对容器应用进行排错,还能管理集群本身及其附属资源。您可以使用 Dashboard 获取运行在集群中的应用的概览信息,也可以创建或者修改 Kubernetes 资源(如 Deployment、Job 等等)。例如,您可以对 Deployment 实现弹性伸缩、发起滚动升级、重启 Pod 或者使用向导创建新的应用。 

    (1)安装 Dashboard 监控界面仅需在 200250229-master 管理节点上安装 Dashboard。

    -1.从官网查找与 kubernetes 对应的 Dashboard 版本,从 https://github.com/kubernetes/dashboard/releases 查找与 kubernetes v1.23.5 对应的 Dashboard 版本。

     f9aaa67947f84695a7201b8456ebf190.png

     -2.下载 Dashboard YAML 文件

    b3a2624865a94c35baa073b7794ea4c0.png

     -3.编辑 Dashboard YAML 文件

    由于默认的镜像仓库在国外可能无法访问,因此修改 YAML 文件中的镜像地址。

    af3c25367d4b46dbb83cce84c126ad7e.png

     -4.拉取 Dashboard 镜像

    93458793db7141e3a2c6e14cb9c2b37f.png

     -5.部署 Dashboard

    8fe9c15ec6ff40b98d5dbaaf039e376b.png

     369d6f0b59ba454093af62e2d979c71a.png

     4024461f3b7d4c41a4c85d4b3d49e749.png

     -6.配置外网访问

    配置对外暴露端口,将 type: ClusterIP 改为 type: NodePort,使外部可以通过 https://NodeIp:NodePort访问 Dashboard。

    190170ea256840f8a81eb90b3d1eb962.png

     -7.检查相关服务的运行状态,获取对外暴露端口

    4cf2a32edf804bdcb48835c04265d8ba.png

    -8. 使用浏览器访问 Dashboard  使用 Firefox 浏览器访问 https://172.16.0.100:30534,进入 Dashboard 登录界面

    95a72da517f64c36aaaf33a231a9f9c9.png

    -9. 创建服务用户、集群角色绑定

    b5614f262c834e4aa620a645c30b2ad1.png

     -10.获取令牌 token

    5c0714cc29cd4dcbaef0c53824ddf005.png

    -11. 使用 token 认证进行登录复制 token 值,在 Dashboard 登录界面的“输入 token”文本框中粘贴 token 值后,单击“登录”按钮

    477ca29e2ce34d678048a0eed2c52ef7.png

                                                     粘贴输入 token 值

    在 Dashboard 登录界面粘贴 token 值后,单击“登录”按钮,进入 Kubernetes 主界面

    5c4c02722e144f81aa8d070991a44921.png

    这是K8S平台搭建成功,

    接下来我们部署个nginx看看

     8.部署 nginx 服务验证集群

    (1)部署 nginx 服务

    c5637e86d3874b07a0f9270d15fbf809.png(2)从任一节点访问 nginx 服务

    b18f17bd0f8e4aee852e2057cfc3fed3.png

     

     39c175fad3b041958f40dfeb5a7f495d.png

     f6cd40b0bf844c4a9812e6a5acf004fc.png

    打开浏览器看看

     或者在在linux主机上输入curl http://172.22.29.100:31755 curl http://172.22.29.101:31755 http://172.22.29.102:31755看看

    好了,k8s平台就搭建好了,能看到这,我就很欣慰了搭建过程有点长。恭喜你!!!

     

  • 相关阅读:
    FPGA时序约束02——不同时序路径的分析方法
    SpringCloudAlibaba 微服务整合分布式事务Seata
    【软件测试】初识测试
    Web前端:JavaScript编程语言有哪些优势?
    直播预告 | 这是一场你绝对不能错过的电商风控实操课程
    数据分析思维分析方法和业务知识——业务指标
    【FPGA教程案例55】深度学习案例2——基于FPGA的CNN卷积神经网络之ReLu激活层verilog实现
    java 程序CPU过高,问题排查解决
    基于JSP的九宫格日志网站
    TinyXml库的用法之xml文件节点遍历与节点删除
  • 原文地址:https://blog.csdn.net/weixin_55418082/article/details/127943677