第三章 kubeadm快速部署kubernetes1.24.x集群

1 kubernetes集群环境准备

1.1 主机操作系统说明

  • 操作系统版本7.9、对默认操作系统内核进行升级

1.2 主机配置 

1.2.1 主机名配置

由于本次使用3台主机完成kubernetes集群部署,其中1台为master节点,其中两台为worker节点;

master节点
# hostnamectl set-hostname k8s-master01
worker节点
# hostnamectl set-hostname k8s-worker01
# hostnamectl set-hostname k8s-worker02

1.2.2主机地址配置,将主机配置成静态地址

# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=f50073c6-e9ab-407f-a85f-94fd77b2b8d7
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.1.7
PREFIX=24
GATEWAY=192.168.1.1
DNS1=8.8.8.8

1.2.3 配置hosts文件

# vim /etc/hosts
192.168.1.7 k8s-master01
192.168.1.8 k8s-worker01
192.168.1.9 k8s-master02

1.2.4 防火墙配置

# systemctl disable firewalld
# systemctl stop firewalld
# firewall-cmd --state

1.2.5 SELINUX配置

# setenforce 0
# sed -ri 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

1.2.6 时间同步配置

# crontab -l
0 */1 * * * /usr/sbin/ntpdate time1.aliyun.com

1.2.7 升级操作系统内核

所有主机都需要操作
导入elrepo gpg key
# rpm --import https://www.elrepo.ory/RPM-GPG-KEY-elrepo.org
安装elrepo YUM源仓库
# yum -y install http://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm
安装kernel-ml版本,ml为长期稳定版本,lt为长期维护版本,可以通过kernel.org进行查看
# yum --enablerepo="elrepo-kernel" install -y kernel-lt.x86_64
设置grub2默认引导为0
#grub2-set-default 0
重新生成grub2引导文件
# grub2-mkconfig -o /boot/grub2/grub.cfg
 更新后,需要重启,使用升级的内核生效。
# reboot
重启后,需要验证内核是否为更新对应的版本
# uname -r

1.2.8 配置内核转发机网桥过滤

添加网桥过滤及内核转发配置文件
# cat /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
vm.swappiness = 0
加载br_netfilter模块
# modprobe br_netfilter
查看是否加载
# lsmod | grep br_netfilte

  1.2.9 安装ipset及ipvsadm

安装ipset和ipvsadm
# yum -y install ipset ipvsadm
配置ipvsadm模块加载方式
添加需要加载的模块
# cat > /etc/sysconfig/modules/ipvs.modules << EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack
>EOF


授权、运行、检查是否加载
# chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules# lsmod | grep -e ip_vs -e nf_conntrack

1.2.10 关闭SWAP分区

#永久关闭swap分区,需要重启操作系统
# swapoff -a
# vim /etc/fstab
将swap挂载行进行注释

1.3 docker准备

1.3.1 Docker安装YUM源准备

# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3
sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
# Step 4: 更新并安装Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
# Step 4: 开启Docker服务
sudo service docker start

# 注意:
# 官方软件源默认启用了最新的软件,您可以通过编辑软件源的方式获取各个版本的软件包。例如官方并没有将测试版本的软件源置为可用,您可以通过以下方式开启。同理可以开启各种测试版本等。
# vim /etc/yum.repos.d/docker-ce.repo
#   将[docker-ce-test]下方的enabled=0修改为enabled=1
#
# 安装指定版本的Docker-CE:
# Step 1: 查找Docker-CE的版本:
# yum list docker-ce.x86_64 --showduplicates | sort -r
#   Loading mirror speeds from cached hostfile
#   Loaded plugins: branch, fastestmirror, langpacks
#   docker-ce.x86_64            17.03.1.ce-1.el7.centos            docker-ce-stable
#   docker-ce.x86_64            17.03.1.ce-1.el7.centos            @docker-ce-stable
#   docker-ce.x86_64            17.03.0.ce-1.el7.centos            docker-ce-stable
#   Available Packages
# Step2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.0.ce.1-1.el7.centos)
# sudo yum -y install docker-ce-[VERSION]

1.3.2 修改cgroup方式

在/etc/docker/daemon.json添加如下内容
# vim /etc/docker/daemon.json
{
    "exec-opts": ["native.cgroupdriver=systemd"]
}

# systemctl restart docker
# docker info

1.3.3 cri-dockerd安装

1.3.3.1 golang环境准备
wget https://storage.googleapis.com/golang/getgo/installer_linux
chmod +x ./installer_linux
./installer_linux
source ~/.bash_profile
1.3.3.2 下载cri-dockerd源码包
git clone https://github.com/Mirantis/cri-dockerd.git

安装

cd cri-dockerd
mkdir bin
go build -o bin/cri-dockerd
mkdir -p /usr/local/bin
install -o root -g root -m 0755 bin/cri-dockerd /usr/local/bin/cri-dockerd
cp -a packaging/systemd/* /etc/systemd/system
sed -i -e 's,/usr/bin/cri-dockerd,/usr/local/bin/cri-dockerd,' /etc/systemd/system/cri-docker.service
systemctl daemon-reload
systemctl enable cri-docker.service
systemctl enable --now cri-docker.socket

1.4 kubernetes1.24.x集群部署

1.4.1 kubernetes YUM源准备

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=
https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
setenforce 0
默认安装 yum install -y kubelet kubeadm kubectl
systemctl enable kubelet
查看指定版本
# yum list  kubeadm.x86_64 --showduplicates |sort -r
# yum list  kubelet.x86_64 --showduplicates |sort -r
# yum list  kubectl.x86_64 --showduplicates |sort -r
安装指定版本
# yum -y install kubeadm-1.24.x-0 kubelet-1.24.x-0 kubectl-1.24.x-0
# systemctl enable kubelet

1.4.2 配置kubelet

vim /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"

1.4.3 集群镜像准备

# kubeadm config images list --kubernetes-version=v1.24.x

拉去镜像,此步需要上外网,或是通过可以访问goole的机器将镜像拉取下来后,在进行初始化

# cat image_download.sh
#!/bin/bash
images_list='
镜像列表'

for i in $images_list
do
    docker pull $i
done
#镜像导出
docker save -o k8s-1-24-x.tar $images_list


将导出的镜像导入的k8smaster节点
docker load -i k8s-1-24-x.tar

1.4.4 集群初始化

kubeadm init \
--kubernetes-version v1.24.7 \
--pod-network-cidr=10.244.0.0/16 \
--apiserver-advertise-address=192.168.1.7 \
--cri-socket unix:///var/run/cri-dockerd.sock

1.5 集群网络准备

安装参考网址:https://projectcalico.docs.tigera.io/about/about-calico

1.5.1 安装calico和自定义资源定义

kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.24.5/manifests/tigera-operator.yaml

1.5.2 通过创建必要的自定义资源来安装 Calico

wget https://raw.githubusercontent.com/projectcalico/calico/v3.24.5/manifests/custom-resources.yaml

1.5.3 修改文件第13行,修改为使用kubeadm init --pod-network-cidr对应的IP地址段

# vim custom-resources.yaml
ipPools:
- blocksize: 26
  cidr: 10.224.0.0./16
  encapsulation: 

当node无法正常运行时,可以考虑在此文件中添加相关内容

nodeAddressAutodetectionV4:
    interface: ens.*

应用资源清单文件

# kubectl apply -f custom-resources.yaml

 

posted @ 2022-11-23 15:13  摩天居士-谢烟客  阅读(131)  评论(0编辑  收藏  举报