《Kubernetes部署篇:Ubuntu20.04基于外部etcd+部署kubernetes1.24.17集群(多主多从)》

一、部署架构图

1、架构图如下所示:

在这里插入图片描述

2、部署流程图如下所示:
在这里插入图片描述


二、环境信息

  • 1、部署规划
主机名 K8S版本 系统版本 内核版本 IP地址 备注
k8s-master-63 1.24.17 Ubuntu 20.04.5 LTS 5.15.0-69-generic 192.168.1.63 master节点 + etcd节点
k8s-master-64 1.24.17 Ubuntu 20.04.5 LTS 5.15.0-69-generic 192.168.1.64 master节点 + etcd节点
k8s-master-65 1.24.17 Ubuntu 20.04.5 LTS 5.15.0-69-generic 192.168.1.65 master节点 + etcd节点
k8s-worker-66 1.24.17 Ubuntu 20.04.5 LTS 5.15.0-69-generic 192.168.1.66 worker节点
- - - - 192.168.1.146 vip(虚拟ip)
k8s-lb-01 - Ubuntu 20.04.5 LTS 5.15.0-69-generic 192.168.1.185 Nginx + keepalived
k8s-lb-02 - Ubuntu 20.04.5 LTS 5.15.0-69-generic 192.168.1.205 Nginx + keepalived

  • 2、集群网段
宿主机 集群Pod网段 集群Service网段
192.168.1.0/24 10.48.0.0/16 10.96.0.0/16

说明:Kubernetes高可用集群基于kubeadm工具部署,其中etcd集群采用二进制方式部署。由于测试机器数量有限,etcd服务部署在master节点上,你可以根据自己需要,使用单独的主机部署etcd集群服务。


  • 3、基础软件版本
软件 版本 安装方式
containerd 1.7.2 apt或二进制
runc 1.1.7 apt或二进制
cni 1.2.0 apt或二进制
cri-tools 1.26.0 apt或二进制
kube-lb(nginx) 1.22.1 二进制
keepalived v2.2.7 二进制
kubeadm、kubectl、kubelet v1.24.17 apt或二进制

如果kubeadm、kubectl、kubelet使用二进制安装,需要单独安装依赖软件包,如果是使用apt方式安装,则会自动安装。如下所示:

软件 版本
ebtables 2.0.11
socat 1.7.3.3

总结:

1、安装containerd,需要同时安装runc及cni网络插件。Containerd不能直接操作容器,需要通过runc来运行容器。默认Containerd管理的容器仅有lo网络(无法访问容器之外的网络),如果需要访问容器之外的网络则需要安装CNI网络插件。CNI(Container Network Interface) 是一套容器网络接口规范,用于为容器分配ip地址,通过CNI插件Containerd管理的容器可以访问容器之外的网络。

2、cri-tools(容器运行时工具):这是一个 用于与Kubernetes容器运行时接口(CRI)进行交互的命令行工具集。它提供了一些有用的功能,如创建、销毁和管理容器等。

3、ebtables(以太网桥规则管理工具):这是一个用于在Linux系统中管理以太网桥规则的工具。在Kubernetes中,ebtables 用于在网络分区中实现容器之间的隔离和通信。

4、socat(网络工具):这是一个用于在Linux系统中建立各种类型网络连接的工具。在Kubernetes网络中,socat可以 用于创建端口转发、代理和转发等网络连接。


  • 4、容器镜像版本
K8S镜像 calico镜像
registry.k8s.io/kube-apiserver:v1.24.17 docker.io/calico/cni:v3.25.0
registry.k8s.io/kube-controller-manager:v1.24.17 docker.io/calico/kube-controllers:v3.25.0
registry.k8s.io/kube-scheduler:v1.24.17 docker.io/calico/node:v3.25.0
registry.k8s.io/kube-proxy:v1.24.17 -
registry.k8s.io/pause:3.7 -
registry.k8s.io/coredns/coredns:v1.8.6 -

三、安装和配置先决条件

3.1、主机名设置

说明:分别在对应的节点IP上设置主机名。

主机IP 设置主机名
192.168.1.63 hostnamectl set-hostname k8s-master-63 && bash
192.168.1.64 hostnamectl set-hostname k8s-master-64 && bash
192.168.1.65 hostnamectl set-hostname k8s-master-65 && bash
192.168.1.66 hostnamectl set-hostname k8s-worker-66 && bash
192.168.1.185 hostnamectl set-hostname k8s-lb-01 && bash
192.168.1.205 hostnamectl set-hostname k8s-lb-02 && bash

3.2、配置主机hosts

说明:以下操作无论是master节点和worker节点均需要执行。

cat >> /etc/hosts <<EOF
192.168.1.63  k8s-master-63
192.168.1.64  k8s-master-64
192.168.1.65  k8s-master-65
192.168.1.66  k8s-worker-66
EOF

3.3、关闭防火墙

说明:以下操作无论是master节点、worker节点、kube-lb节点均需要执行。

ufw disable && systemctl stop ufw && systemctl disable ufw

3.4、关闭swap分区

说明:以下操作无论是master节点、worker节点、kube-lb节点均需要执行。

swapoff -a
sed -i '/swap/ s/^/#/'  /etc/fstab

3.5、修改系统参数

说明:以下操作无论是master节点、worker节点、kube-lb节点均需要执行。

cat >>/etc/security/limits.conf <<EOF
* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535
* soft  memlock  unlimited
* hard memlock  unlimited
EOF

3.6、时间时区同步

说明:以下操作无论是master节点、worker节点、kube-lb节点均需要执行。

1、设置时区为Asia/Shanghai,如果已经是则请忽略

root@k8s-master-65:~# timedatectl
               Local time: 五 2023-03-31 14:11:36 CST
           Universal time: 五 2023-03-31 06:11:36 UTC
                 RTC time: 五 2023-03-31 06:11:36    
                Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yes                       
              NTP service: active                    
          RTC in local TZ: no  

3.7、修改内核参数

说明:以下操作无论是master节点、worker节点均需要执行。

说明:有一些ipv4的流量不能走iptables链,因为linux内核是一个过滤器,所有流量都会经过他,然后再匹配是否可进入当前应用进程去处理,所以会导致流量丢失。配置k8s.conf文件,如下所示:

  • 1、加载br_netfilter和overlay模块
cat <<EOF | tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
modprobe overlay
modprobe br_netfilter
  • 2、设置所需的sysctl参数
cat <<EOF | tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward                 = 1
EOF
sysctl --system

3.8、启用IPVS模式

说明:以下操作无论是master节点、worker节点节点均需要执行。

# kube-proxy开启ipvs的前提需要加载以下的内核模块
ip_vs
ip_vs_rr
ip_vs_wrr
ip_vs_sh
nf_conntrack_ipv4

注意:如果出现modprobe: FATAL: Module nf_conntrack_ipv4 not found in directory /lib/modules/5.15.0-69-generic错误,这是因为使用了高内核,当前内核版本为5.15.0-69-generic,在高版本内核已经把nf_conntrack_ipv4替换为nf_conntrack了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Ubuntu 20.04 上部署 Kubernetes 1.24 集群的步骤如下: 1. 确保每台机器上都安装了 Docker 和 Kubernetes 相关软件包。可以使用以下命令安装: ``` sudo apt-get update sudo apt-get install docker.io sudo curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main" sudo apt-get update sudo apt-get install -y kubelet kubeadm kubectl ``` 2. 在其中一台机器上初始化 Kubernetes 集群。运行以下命令: ``` sudo kubeadm init --pod-network-cidr=10.244.0.0/16 ``` 其中,`--pod-network-cidr=10.244.0.0/16` 是一个必需的参数,用于指定 Pod 网络的 CIDR。这里我们使用 Flannel 网络插件,默认使用的 Pod 网络 CIDR 是 `10.244.0.0/16`。 3. 安装 Pod 网络插件。运行以下命令: ``` sudo kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml ``` 4. 将 Kubernetes 集群加入到其他机器上。运行以下命令: ``` sudo kubeadm join <master-ip>:<master-port> --token <token> --discovery-token-ca-cert-hash <hash> ``` 其中,`<master-ip>` 是 Kubernetes 节点的 IP 地址,`<master-port>` 是 Kubernetes 节点的端口号,`<token>` 和 `<hash>` 是在初始化 Kubernetes 集群时生成的。 5. 等待所有节点加入成功。运行以下命令检查节点状态: ``` sudo kubectl get nodes ``` 如果所有节点都已加入成功,将显示所有节点的状态信息。 以上就是在 Ubuntu 20.04 上部署 Kubernetes 1.24 集群的步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东城绝神

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值