一、环境配置
主机 | 配置 | 角色 | 系统版本 | IP |
master01 | 2核4G | master | openEuler22.03(LTS-SP3) | 192.168.0.111 |
master02 | 2核4G | master | openEuler22.03(LTS-SP3) | 192.168.0.112 |
master03 | 2核4G | master | openEuler22.03(LTS-SP3) | 192.168.0.113 |
worker01 | 2核4G | worker | openEuler22.03(LTS-SP3) | 192.168.0.114 |
worker01 | 2核4G | worker | openEuler22.03(LTS-SP3) | 192.168.0.115 |
二、环境准备
1、配置hosts,集群内主机都需要执行。
cat >>/etc/hosts<<EOF
192.168.0.111 master01
192.168.0.112 master02
192.168.0.113 master03
192.168.0.114 worker01
192.168.0.115 worker02
EOF
2、集群主机配置互信,集群内主机都需要执行。
ssh-keygen
ssh-copy-id 192.168.0.111
ssh-copy-id 192.168.0.112
ssh-copy-id 192.168.0.113
ssh-copy-id 192.168.0.114
ssh-copy-id 192.168.0.115
3、关闭防火墙、selinux,集群内主机都需要执行。
systemctl stop firewalld && systemctl disable firewalld
setenforce 0
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
sestatus
4、关闭系统的交换分区swap,集群内主机都需要执行。
sed -ri 's/^([^#].*swap.*)$/#\1/' /etc/fstab && grep swap /etc/fstab && swapoff -a && free -h
5、配置和加载ipvs模块,ipvs比iptable更强大。集群内主机都需要执行。
dnf -y install ipvsadm ipset sysstat conntrack libseccomp
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
6、配置时间台同步,集群内主机都需要执行。
dnf install -y ntpdate
crontab -e
0 */1 * * * ntpdate time1.aliyun.com
7、开启主机路由转发及网桥过滤,集群内主机都需要执行。
配置内核加载br_netfilter和iptables放行ipv6和ipv4的流量,确保集群内的容器能够正常通信。
cat > /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_nonlocal_bind = 1
net.ipv4.ip_forward = 1
vm.swappiness=0
EOF
加载模块:
modprobe br_netfilter
让配置生效:
sysctl -p /etc/sysctl.d/k8s.conf
8、创建应用使用的文件系统,为了防止根目录爆满,不利于后期维护,建议给kubelet和docker创建单独文件系统:
#如果是重搭,则先删掉老vg: vgremove datavg -y
pvcreate /dev/sdb
vgcreate datavg /dev/sdb
lvcreate -L 13G -n dockerlv datavg -y
lvcreate -L 13G -n kubeletlv datavg -y
lvcreate -L 10G -n etcdlv datavg -y
mkfs.ext4 /dev/datavg/dockerlv
mkfs.ext4 /dev/datavg/kubeletlv
mkfs.xfs /dev/datavg/etcdlv
mkdir /var/lib/docker
mkdir /var/lib/kubelet
mkdir /var/lib/etcd
配置机器重启自动挂文件系统:
lsblk -f
vi /etc/fstab 格式参考以下:
/dev/datavg/dockerlv /var/lib/docker ext4 defaults,nofail 1 1
/dev/datavg/kubeletlv /var/lib/kubelet ext4 defaults,nofail 1 1
/dev/datavg/etcdlv /var/lib/etcd xfs defaults,nofail 1 1
mount -a
三、安装docker和cri-dockerd ,所有主机都需要执行
1、配置yum源:
cd /etc/yum.repos.d/
curl -O https://download.docker.com/linux/centos/docker-ce.repo
sed -i 's/$releasever/8/g' docker-ce.repo
2、创建docker用户,可尝试不创建此用户,之前cri-dockerd无论如何都无法启动,最后创建docker用户后启动成功,所以创建docker用户:
groupadd docker
useradd -g docker docker
3、安装cri-dockerd:
cri-dockerd插件在此工程:https://github.com/Mirantis/cri-dockerd/
先准备cri-dockerd的rpm包,再使用dnf命令安装会自动安装相关依赖包,cri-dockerd用新旧版本都可以,我这里使用v0.3.14-3版本
dnf install cri-dockerd-0.3.14-3.el8.x86_64.rpm -y
4、安装docker:
dnf install docker -y
5、配置 cri-dockerd
从国内 cri-dockerd 服务无法下载 k8s.gcr.io上面相关镜像,导致无法启动,所以需要修改cri-dockerd 使用国内镜像源
sed -ri 's@^(.*fd://).*$@\1 --pod-infra-container-image registry.aliyuncs.com/google_containers/pause:3.9@' /usr/lib/systemd/system/cri-docker.service
6、启动和设置docker和cri-dockerd开机自启
systemctl daemon-reload && systemctl start docker && systemctl enable docker
systemctl start cri-docker && systemctl enable cri-docker
7、配置镜像加速:
现在dockerhub仓库被禁用了,现在配置加速器也没啥用了。exec-opts参数可能还是需要配置。
cat > /etc/docker/daemon.json <<EOF
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com",
"https://reg-mirror.qiniu.com",
"https://registry.docker-cn.com"
],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "200m",
"max-file": "5"
}
}
EOF
systemctl daemon-reload && systemctl restart docker
四、安装kubernetes
1、配置yum源,所有主机都需要执行
cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.29/rpm/
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.29/rpm/repodata/repomd.xml.key
EOF
dnf makecache
2、安装 kubelet、kubeadm、kubectl组件,设置systemctl enable kubelet开机自启,所有主机都需要执行
dnf install -y kubelet kubeadm kubectl
此时还不能启动kubelet,因为集群还没有配置起来,现在仅仅设置开机自启动
systemctl enable kubelet
3、生成初始化配置文件,在其中一个master执行。
kubeadm config print init-defaults > kubeadm.yaml
4、执行kubeadm config images list会列出安装kubernetes需要哪些镜像
kubeadm config images list
5、拉取安装kubernetes所需要用到的镜像,在其中一个master执行。
kubeadm config images pull --config=kubeadm.yaml
6、初始化集群,在其中一个master执行。
kubeadm init --config=kubeadm.yaml
7、如果想在其他机器,其他用户能够执行kubectl命令,则执行以下操作:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
8、在master02和master03执行,加入master节点
kubeadm join master01:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:aa930347f65820ba0f77a66b3f31d16906c04fe355cf369397456ca7f02b3ff0 \
--control-plane --certificate-key 08c16995b0ac15a581c720018a1a25096b776a2592729a27265339a81db4252b \
--cri-socket unix:///run/cri-dockerd.sock
9、在worker01和worker02执行,加入node节点
kubeadm join master01:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:aa930347f65820ba0f77a66b3f31d16906c04fe355cf369397456ca7f02b3ff0
10、如果安装失败,重置初始化
kubeadm reset --cri-socket=unix:///var/run/cri-dockerd.sock
五、安装网络插件
1、下载网络插件
wget https://docs.projectcalico.org/manifests/calico.yaml
3、安装网络插件
kubectl apply -f calico.yaml
可用命令观察各服务容器的状态
watch kubectl get pods --all-namespaces -o wide
4、查看节点状态
kubectl get node
标签:LTS,openEuler22.03,--,SP3,etc,dockerd,docker,cri,kubeadm From: https://www.cnblogs.com/teiperfly/p/18249748