【精选】Kubeadm 快速搭建 k8s v1.24.1 集群(openEuler 22.03 LTS) 您所在的位置:网站首页 k8s官方推荐部署工具 【精选】Kubeadm 快速搭建 k8s v1.24.1 集群(openEuler 22.03 LTS)

【精选】Kubeadm 快速搭建 k8s v1.24.1 集群(openEuler 22.03 LTS)

2023-10-19 10:07| 来源: 网络整理| 查看: 265

kubeadm 简介

kubeadm 是 Kubernetes(以下简称 k8s)官方提供的用于快速安装部署 k8s 集群的工具,伴随 k8s 每个版本的发布都会同步更新,kubeadm 会对集群配置方面的一些实践做调整,通过实验 kubeadm 可以学习到 k8s 官方在集群配置上一些新的最佳实践。

这个工具能通过两条指令完成一个 k8s 集群的部署:

# 创建一个 Master 节点 $ kubeadm init # 将一个 Node 节点加入到当前集群中 $ kubeadm join

使用 kubeadm 工具大大简化了 k8s 的部署操作。

k8s 的部署方式

通常使用 kubeadm 部署和二进制方式部署,他们之间的区别:

kubeadm 方式部署,组件容器化部署,只有 kubelet 没有被容器化二进制方式部署,传统的守护进程(systemd)管理服务 systemctl 实现目标

基于 华为 openEuler 22.03 LTS 系统,使用 kubeadm v1.24.1 搭建一套由单 Master node 和两个 Worker node 组成的 k8s v1.24.1 版本的集群环境。

系统环境准备 部署要求

在开始部署之前,部署 k8s 集群的宿主机(vm 或 物理机)需要满足以下几个条件:

宿主机 3 台,操作系统 CentOS7.x/8.x-86_x64 系列(此处使用 openEuler 22.03 LTS)硬件配置:RAM 4GB或更多,CPU 核数 2c 或更多,硬盘 60GB 或更多集群中所有机器之间网络互通可以访问外网,需要拉取镜像关闭防火墙,禁止 swap 分区所有集群节点同步系统时间(使用 ntpdate 工具)

注意:以上部署规格的配置要求为最小化集群规模要求,生产环境的集群部署要求按实际情况扩展配置,为了保障集群环境的高可用性,搭建集群环境的宿主机通常以奇数( ≥ 3、5、7…)节点最佳。

部署规划

此处以单 master node 和两 worker node 集群模式为例,使用 kubeadm 部署 Kubernetes v1.24.1 版本集群环境。

1. 单 master 集群模式

单 master 和 3 worker node 集群模式

2. vm 资源编排

此处使用 VMware Workstation Pro v16.2.2 虚拟机搭建 vm 环境,规划如下:

k8s 集群角色ip 地址hostname 主机名称资源规格操作系统安装组件master192.168.18.130k8s-master-012c4g/60gopenEuler 22.03 LTSkube-apiserver、kube-controller-manager、kube-scheduler、etcd、containerd、kubelet、kube-proxy、keepalived、nginx、calico、metrics-server、dashboardworker node192.168.18.131k8s-node-012c4g/60gopenEuler 22.03 LTScontainerd、kubelet、kube-proxy、ingress-controller、calico,corednsworker node192.168.18.132k8s-node-022c4g/60gopenEuler 22.03 LTScontainerd、kubelet、kube-proxy、ingress-controller、calico,coredns

关于 VMware Workstation Pro v16.2.2 虚拟机自行下载,并安装配置好,vm 系统使用华为 openEuler 22.03 LTS ISO 镜像。

注意:VMware 中网络配置选择【NAT 模式】,确保 vm 内部网络环境可以访问到外部网络环境。

3. k8s 组件版本

关于 k8s 的常用资源组件版本信息规划如下:

名称版本下载地址kubernetesv1.24.1https://github.com/kubernetes/kubernetes/releases/tag/v1.24.1kubelet、kubeadm、kubectlv1.24.1yum install -y kubelet-1.24.1 kubeadm-1.24.1 kubectl-1.24.1containerdv1.6.4,cni v0.3.1https://github.com/containerd/containerd/releases/tag/v1.6.4flannelv0.18.0https://github.com/flannel-io/flannel/releases/tag/v0.18.0calicov3.23.1https://github.com/projectcalico/calico/releases/tag/v3.23.1kube-state-metricsv2.4.2https://github.com/kubernetes/kube-state-metrics/releases/tag/v2.4.2metrics-server-helm-chartv3.8.2https://github.com/kubernetes-sigs/metrics-server/releases/tag/metrics-server-helm-chart-3.8.2Kong Ingress Controller for Kubernetes (KIC)v2.3.1https://github.com/Kong/kubernetes-ingress-controller/releases/tag/v2.3.1dashboardv2.5.1https://github.com/kubernetes/dashboard/releases/tag/v2.5.1 4. 关于 openEuler

基于华为 openEuler 系统环境部署,推荐使用 openEuler 22.03 LTS 和 openEuler 20.03 LTS SP3,以 root 身份执行下面命令。

openEuler LTS

为了方便操作,vm 中的 openEuler 系统网络 ip 可以按照上面的编排规划,设置静态 ip 地址。

关于 openEuler 系统的安装,请自行参考官方文档,此处不是重点,接下来介绍 openEuler 系统安装后,我们需要设置的相关事项。

openEuler 资源地址:

ISO下载,https://www.openeuler.org/zh/download/安装指南,https://docs.openeuler.org/zh/docs/22.03_LTS/docs/Installation/installation.html 5. shell 终端

以下是一些比较常用的 shell 终端,选择自己喜欢的一个安装配置即可。

Xshell 5/6/7Windows PowerShell / PowerShellWindows TerminalPuTTYVisual Studio Code VM 系统部署操作事项(所有节点)

注意:下面命令在 k8s 所有节点(master + worker)执行。

1. 关闭防火墙 Firewalld

防火墙 firewalld 先 stop 再 disable ,操作如下:

systemctl stop firewalld #停止 $ systemctl disable firewalld #开机禁用 $

查看防火墙状态

systemctl status firewalld #查看状态

输出如下信息,说明已经关闭

[root@k8s-master-01 ~]# systemctl status firewalld ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: inactive (dead) Docs: man:firewalld(1)

[Linux防火墙操作命令,开放或关闭端口] =》 https://zhuanlan.zhihu.com/p/161196711

2. 关闭 SELinux

安全增强型 Linux(SELinux)是一个 Linux 内核的功能,它提供支持访问控制的安全政策保护机制。

# 临时关闭 SELinux。 setenforce 0 # 永久关闭 SELinux。 vi /etc/selinux/config SELINUX=disabled

验证 selinux 状态

getenforce

输出如下信息,说明已经关闭

[root@k8s-node-01 ~]# getenforce Disabled

SELinux 状态说明

SELinux 状态为 disabled,表明 SELinux 已关闭SELinux 状态为 enforcing 或者 permissive,表明 SELinux 在运行 3. 关闭 Swap

swap 的用途 ?

swap 分区就是交换分区,(windows 平台叫虚拟内存) 在物理内存不够用时,操作系统会从物理内存中把部分暂时不被使用的数据转移到交换分区,从而为当前运行的程序留出足够的物理内存空间。

为什么要关闭 swap ?

swap 启用后,在使用磁盘空间和内存交换数据时,性能表现会较差,会减慢程序执行的速度。

有的软件的设计师不想使用交换分区,例如:kubelet 在 v1.8 版本以后强制要求 swap 必须关闭,否则会报错:

Running with swap on is not supported, please disable swap! or set --fail-swap-on flag to false

或者 kubeadm init 时会报错:

[ERROR Swap]: running with swap on is not supported. Please disable swap

关闭 swap

swapoff -a # 临时关闭 vi /etc/fstab # 永久关闭,注释掉 swap 这行

查看 swap 是否关闭

[root@k8s-master-01 ~]# free -m total used free shared buff/cache available Mem: 1454 881 147 73 425 179 Swap: 0 0 0

显示 total/used/free 为 0,说明已经关闭。

4. 设置宿主机名称

依据宿主机(vm 或物理机)资源编排情况,使用 systemd 里面的 hostnamectl 设置主机名。

# 临时 hostnamectl set-hostname k8s-master-01 hostnamectl set-hostname k8s-node-01 hostnamectl set-hostname k8s-node-02 # 永久,编写对应的 hostname vi /etc/hostname

设置完成后,重新进入下 shell 终端,使配置生效。

bash 5. 在 Master node 和 Worker node 添加 hosts

修改 hosts 文件,配置主机名称和 ip 之间的映射。

$ cat > /etc/hosts


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有