赞
踩
1、架构图如下所示:
2、部署流程图如下所示:
主机名 | 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 |
宿主机 | 集群Pod网段 | 集群Service网段 |
---|---|---|
192.168.1.0/24 | 10.48.0.0/16 | 10.96.0.0/16 |
说明:Kubernetes高可用集群基于kubeadm工具部署,其中etcd集群采用二进制方式部署。由于测试机器数量有限,etcd服务部署在master节点上,你可以根据自己需要,使用单独的主机部署etcd集群服务。
软件 | 版本 | 安装方式 |
---|---|---|
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可以 用于创建端口转发、代理和转发等网络连接。
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 | - |
说明:分别在对应的节点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 |
说明:以下操作无论是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
说明:以下操作无论是master节点、worker节点、kube-lb节点均需要执行。
ufw disable && systemctl stop ufw && systemctl disable ufw
说明:以下操作无论是master节点、worker节点、kube-lb节点均需要执行。
swapoff -a
sed -i '/swap/ s/^/#/' /etc/fstab
说明:以下操作无论是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
说明:以下操作无论是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
说明:以下操作无论是master节点、worker节点均需要执行。
说明:有一些ipv4的流量不能走iptables链,因为linux内核是一个过滤器,所有流量都会经过他,然后再匹配是否可进入当前应用进程去处理,所以会导致流量丢失。配置k8s.conf文件,如下所示:
cat <<EOF | tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
modprobe overlay
modprobe br_netfilter
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
说明:以下操作无论是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了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。