部署kubernetes-1.27.2(基础环境)

基础环境准备

本文章介绍通过kubeadm工具部署kubernetes-1.27.2版本,尽量遵循官网文档。

官网推荐的安装方式有kOps和kubeadm,以及kubespray方式部署。其他工具后面会出文章。

部署kubernetes-1.27.2(基础环境)_第1张图片

 先开始部署基础环境,部署kubernetes先决定容器运行时,也就是底层容器,在kubernetes官网上推荐使用的底层容器有三种,也是最常用的三种,分别是containerd,CRI-O,Docker-engine。后面三种底层容器都会出不同的文章说明。

部署kubernetes-1.27.2(基础环境)_第2张图片

安装kubernetes工具

这里使用的是centos系统,其他redhat等相同,根据自己的实际环境来操作。先配置好网络,yum源包,保证安装工具没有问题。

首先保留系统刚安装默认存在的repo源,保持主机联网状态。

根据kubernetes官网,使用官方的指定的repo源,下载kubernetes工具,这里官网指定的配置源为google的镜像源。在国内无法访问(可以通过其他方式解决例如配置代理),也可以使用阿里云的kubernetes的镜像源或者自己找到rpm包做yum源,下载的kubernetes组件的版本正确即可。

[root@localhost ~]# vim /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0

下载kubernetes组件,默认是最新版,所以这里需要指定版本。

[root@localhost ~]# yum install kubeadm-1.27.2 kubectl-1.27.2 kubelet-1.27.2 -y
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
软件包 kubeadm-1.27.2-0.x86_64 已安装并且是最新版本
软件包 kubectl-1.27.2-0.x86_64 已安装并且是最新版本
软件包 kubelet-1.27.2-0.x86_64 已安装并且是最新版本
无须任何处理
#确保下载版本为最新版工具。

转发ipv4流量并让iptables看到桥接流量

所有节点都需要将sysctl所需的配置写入

[root@localhost ~]# cat /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.ipv4.ip_forward=1
#然后使其生效
[root@localhost ~]# modprobe br_netfilter
[root@localhost ~]# sysctl -p /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1

关闭交换分区

为确保kubernetes性能,所有节点都需要关闭交换分区,注释掉交换分区。

[root@localhost ~]# swapoff -a
[root@localhost ~]# vim /etc/fstab
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=8c9ec778-e898-4be6-bda9-1600ceee752c /boot                   xfs     defaults        0 0
/dev/mapper/centos-home /home                   xfs     defaults        0 0
#/dev/mapper/centos-swap swap                    swap    defaults        0 0

配置时间同步关闭防火墙

再部署kubernetes集群的时候需要进行时间同步,确保各节点时间的一致性,以确保集群运行中各种时间的顺序正确。例如,在使用kubelet定期检查容器运行状态时,如果时间不一致可能会导致容器内容出现错误。

systemctl stop firewalld
setenforce 0
#上面关闭防火墙,或者开放端口,保证网络连接。

[root@localhost ~]# vim /etc/chrony.conf
allow all
local stratum 10
#添加上面配置,或者修改
[root@localhost ~]# systemctl restart chronyd
[root@localhost ~]# chronyc sources
210 Number of sources = 4
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^? time.neu.edu.cn               1   6     1     0  +1377us[+1377us] +/-   36ms
^? stratum2-1.ntp.mow01.ru.>     0   6     0     -     +0ns[   +0ns] +/-    0ns
^? sv1.ggsrv.de                  2   6     1     0    -38ms[  -38ms] +/-  138ms
^? ntp2.inx.net.za               0   6     0     -     +0ns[   +0ns] +/-    0ns
#上面配置主节点时间同步公网,允许其他节点同步,这里要保持联网多次同步直到出现*号代表同步成功。
[root@localhost ~]# vim /etc/chrony.conf
server 192.168.100.10 iburst
[root@localhost ~]# systemctl restart chronyd
[root@localhost ~]# chronyc sources
210 Number of sources = 1
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^* 192.168.100.10                2   6    17    23    -20us[  -24us] +/-   65ms
#上面是其他从节点配置同步主节点

开启ipvs

不开启ipvs将会使用iptables,但是效率低,所以官网推荐开启ipvs。ipvs相比iptables将会有更高的服务可靠性和性能。如果不开启无需配置此步骤。

1,支持更多的协议:kubernetes默认的负载均衡方式时iptables,虽然简单易用,但只是支持TCP/UDP协议。而IPVS不仅支持TCP/UDP,还支持SCTP,TCP+SSL等多种协议。

2,与iptables只支持轮询方式不同,IPVS提供了更多钟负载均衡算法,包括轮询,加权轮询等,使得负载均衡更加精细化和灵活。

3,提高服务性能和可靠性:使用 IPVS 能够有效地提高服务的性能和可靠性。使用 IPVS 可以在各个节点上动态地将请求转发到可用的 Pod 上,避免单节点故障影响整个服务的问题。

4,降低延迟和网络带宽:使用 IPVS 可以减少 Kubernetes 集群中的网络带宽和延迟,因为请求只需要在节点之间进行转发,而不需要跨节点的通信。

[root@localhost ~]# yum install ipset ipvsadm -y
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
软件包 ipset-7.1-1.el7.x86_64 已安装并且是最新版本
软件包 ipvsadm-1.27-8.el7.x86_64 已安装并且是最新版本
无须任何处理
[root@localhost ~]# cat /etc/sysconfig/modules/ipvs.modules
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
[root@localhost ~]# chmod 755 /etc/sysconfig/modules/ipvs.modules
[root@localhost ~]# bash /etc/sysconfig/modules/ipvs.modules

这是在centos中开启ipvs的脚本,该脚本将会在系统启动时自动加载,并使用modprobe加载ipvs的必需模块,需要在每个节点中配置。

配置主机映射,自启动kubelet

[root@localhost ~]# hostnamectl set-hostname master
#其他节点配置自己的名称
[root@localhost ~]# echo "192.168.100.10 master" >> /etc/hosts
[root@localhost ~]# echo "192.168.100.20 node1" >> /etc/hosts
[root@localhost ~]# echo "192.168.100.30 node2" >> /etc/hosts
[root@localhost ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.100.10 master
192.168.100.20 node1
192.168.100.30 node2
[root@master ~]# systemctl enable kubelet
Created symlink from /etc/systemd/system/multi-user.target.wants/kubelet.service to /usr/lib/systemd/system/kubelet.service.

 至此基础环境部署完毕,进入下一阶段,部署底层容器创建kubernetes集群。

你可能感兴趣的:(kubernetes,kubernetes,运维,容器)