首页 > 其他分享 >openEuler22.03(LTS-SP3)安装kubernetesV1.29

openEuler22.03(LTS-SP3)安装kubernetesV1.29

时间:2024-06-15 21:22:31浏览次数:12  
标签:LTS openEuler22.03 -- SP3 etc dockerd docker cri kubeadm

一、环境配置

主机 配置 角色 系统版本 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

相关文章

  • 阿里云 Ubuntu 22.04.4 LTS 安装postfix+dovecot 搭建邮件服务器
    一安装1安装postfixsudoapt-getinstallpostfix#如果没有弹出配置界面,运行dpkg-reconfigurepostfix     #sudovim/etc/postfix/main.cfsmtpd_banner=$myhostnameESMTP$mail_name(Ubuntu)biff=noappend_dot_mydomain=noreadme_directory=......
  • esp32开发环境
    esp32开发环境的搭建,使用IDF的方式开发,在windows上安装两个软件就可以,一个是官方的espidf,另外一个是vscode。espidf下载网址:https://idf.espressif.com/zh-cn/index.html快速入门->安装->手动安装->;选择espidf下载VScode下载地址:https://code.visualstudio.com/安装三个......
  • 【esp32 学习笔记】 入门使用u8g2库(以OLED驱动芯片SSD1306为例)
    一、常用APIU8g2库提供了丰富的API,用于控制各种显示器并在屏幕上绘制文本、图形等元素。以下是U8g2库中一些常用的API:1.初始化-------U8G2U8G2(display,rotation,[,reset[,clock,data,cs,dc,reset,cs1,cs2,cs3]]) 初始化U8g2对象,其中display表示所使用的显示器......
  • OpenEuler22.03安装openGauss5.0.2LTS版本
    OpenEuler22.03安装openGauss5.0.2LTS版本文章目录OpenEuler22.03安装openGauss5.0.2LTS版本一、安装规划二、安装准备2.1修改主机名2.2安装依赖2.3同步时间2.4关闭防火墙2.5关闭selinux2.6关闭透明大页2.7重启机器2.8设置网卡MTU2.9设置字符......
  • 快速上手 GreatSQL 8.0.32-25 with openEuler 24.03 LTS
    5月底,openEuler24.03LTS发布,详情戳:恭喜!openEuler24.03LTS版本发布:首个AI原生开源操作系统在诸多亮点特性中,有一条值得注意:集成GreatSQL数据库,适用于金融级应用场景,具有高可用、高性能、高兼容、高安全等特性。那么,本文就来介绍一下如何安装openEuler24.0......
  • 用ESP32(ESP32-CAM)(Micropython)、水位传感器、继电器、水泵 做根据水位自动加水的设
    基本流程水位传感器放在水缸内上方位置,水位到达水位传感器所在的位置时,水位传感器触发,并输出信号给到ESP32(ESP32CAM)。然后ESP32(ESP32CAM)控制继电器闭合,水泵启动并工作60S。之后还是根据传感器信号,决定继电器是闭合还是断开,一直循环下去。main.py点击查看main.pyfrom......
  • 【esp32 学习笔记】让SD卡发光发热~
    原理图:图 SD卡部分图MCU中与SD卡相关的接口连接关系如下:[ESP32IO26–CSMICROSD][ESP32IO23–MOSI(DI)MICROSD][ESP32IO19–MISO(DO)MICROSD][ESP32IO18–SCKMICROSD][ESP32GND–GNDMICROSD][3.3V–VCCMICROSD] 软件:我们将使用SD卡库用于沟......
  • ESP32学习笔记:NVS分区永久保存数据
    程序示例:/*ESP32startupcounterexamplewithPreferenceslibrary.ThissimpleexampledemonstratesusingthePreferenceslibrarytostorehowmanytimestheESP32modulehasbooted.ThePreferenceslibraryisawrapperaroundtheNon-volatilestorage......
  • rockylinux8编译安装zabbix6.0.30-LTS
    zabbix6.和mysql安装系统环境:rockylinux8.10zabbix版本:zabbix-6.0.30LTS版本php版本:php7.2nginx版本:1.26mysql版本:mysql8#下载软件包wgethttps://cdn.zabbix.com/zabbix/sources/stable/6.0/zabbix-6.0.30.tar.gztarxvfzabbix-6.0.30.tar.gzln-s/tools/zabbix-6.0......
  • 【esp32 项目】使用I2C
    原理图:图I2C接口的RTC芯片图单片机I2C部分引脚图 软件启动I2C启动Wire库并作为主机或者从机加入总线,这个函数调用一次即可,参数为7位从机地址,不带参数就以主机的形式加入总线。Wire.begin();Wire.begin(address);主设备从从设备请求字节由主设备向从设备请求字节,之......