2. Kubernetes 1.24 安装( cri 使用 containerd 或 cri-docker )

2023-11-06 14:50

本文主要是介绍2. Kubernetes 1.24 安装( cri 使用 containerd 或 cri-docker ),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

基于Ubuntu 22.04
除非特别标注,其余步骤master和worker节点都需要操作

在这里插入图片描述

准备工作

修改Ubuntu镜像

https://developer.aliyun.com/mirror/ubuntu?spm=a2c6h.13651102.0.0.2e611b11BvTeZL

备份默认 /etc/apt/sources.list
修改 /etc/apt/sources.list

修改后更新

sudo apt update && sudo apt upgrade

主机名解析

主机名成解析 编辑三台服务器的/etc/hosts文件,添加下面内容
根据自己情况配置,这里我有一台master节点对应 192.168.90.100,node1节点对应 192.168.90.106,node2节点对应 192.168.90.107

192.168.90.100 master
192.168.90.106 node1
192.168.90.107 node2
角色IP地址组件
master192.168.90.100containerd,kubectl,kubeadm,kubelet
node1192.168.90.106containerd,kubectl,kubeadm,kubelet
node2192.168.90.107containerd,kubectl,kubeadm,kubelet

同步时间

启动chronyd服务

[root@master ~]# systemctl start chronyd
[root@master ~]# systemctl enable chronyd
[root@master ~]# date

配置主机名

hostnamectl # 查询主机名
hostnamectl --static set-hostname node1 # 查询主机名为对应节点名

禁用selinux

selinux是linux系统下的一个安全服务,如果不关闭它,在安装集群中会产生各种各样的奇葩问题

Ubuntu 下默认没有,不用改

编辑 /etc/selinux/config 文件,修改SELINUX的值为disable
注意修改完毕之后需要重启linux服务

SELINUX=disabled

修改linux的内核参数

修改linux的内核采纳数,添加网桥过滤和地址转发功能

  • 创建/etc/sysctl.d/kubernetes.conf文件,添加如下配置:
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
  • 重新加载配置
[root@master ~]# sysctl -p
  • 加载网桥过滤模块
[root@master ~]# modprobe br_netfilter
  • 查看网桥过滤模块是否加载成功
[root@master ~]# lsmod | grep br_netfilter
  • 如果未生效查询结果为0,需重启服务器生效(查询结果为0)
cat /proc/sys/net/ipv4/ip_forward
0

禁用iptable和firewalld服务

kubernetes 在运行的中会产生大量的iptables规则,为了不让系统规则跟它们混淆,直接关闭系统的规则

  • 关闭firewalld服务
[root@master ~]# systemctl stop firewalld
[root@master ~]# systemctl disable firewalld
  • 关闭iptables服务
[root@master ~]# systemctl stop iptables
[root@master ~]# systemctl disable iptables

关闭swap

swap分区指的是虚拟内存分区,它的作用是物理内存使用完,之后将磁盘空间虚拟成内存来使用,启用swap设备会对系统的性能产生非常负面的影响,因此kubernetes要求每个节点都要禁用swap设备,但是如果因为某些原因确实不能关闭swap分区,就需要在集群安装过程中通过明确的参数进行配置说明

swapoff -a # 临时禁用
sed -ri 's/.*swap.*/#&/' /etc/fstab # 永久禁用

或者忽略

  • 创建文件 /etc/systemd/system/kubelet.service.d/20-allow-swap.conf
[Service]
Environment="KUBELET_EXTRA_ARGS=--fail-swap-on=false"
  • 执行
sudo systemctl daemon-reload
  • 查看关闭结果

free -h 查看内存

blkid命令 ,查找TYPE=”swap”行以确定交换分区

lsblk命令来搜索和识别[SWAP]分区

配置ipvs功能

在Kubernetes中Service有两种带来模型,一种是基于iptables的,一种是基于ipvs的两者比较的话,ipvs的性能明显要高一些,但是如果要使用它,需要手动载入ipvs模块


# 1.安装ipset和ipvsadm
[root@master ~]# apt install ipvsadm ipset sysstat conntrack -y
# 2.添加需要加载的模块写入脚本文件
[root@master ~]# cat >> /etc/modules-load.d/ipvs.conf <<EOF 
ip_vs
ip_vs_rr
ip_vs_wrr
ip_vs_sh
nf_conntrack
ip_tables
ip_set
xt_set
ipt_set
ipt_rpfilter
ipt_REJECT
ipip
EOF# 3.重启服务
[root@master ~]# systemctl restart systemd-modules-load.service# 4.查看对应的模块是否加载成功
[root@master ~]# lsmod | grep -e ip_vs -e nf_conntrack
ip_vs_sh               16384  0
ip_vs_wrr              16384  0
ip_vs_rr               16384  0
ip_vs                 155648  6 ip_vs_rr,ip_vs_sh,ip_vs_wrr
nf_conntrack          139264  1 ip_vs
nf_defrag_ipv6         24576  2 nf_conntrack,ip_vs
nf_defrag_ipv4         16384  1 nf_conntrack
libcrc32c              16384  4 nf_conntrack,btrfs,raid456,ip_vs

安装

安装containerd(使用containerd,和下面docker 二选一)

如果已经安装docker 会卸载 containerd.io docker-ce ,谨慎安装

apt install containerd
systemctl start containerd
mkdir -p /etc/containerd/
containerd config default > /etc/containerd/config.toml
sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/g' /etc/containerd/config.toml
systemctl restart containerd

安装cri-docker(使用docker,和上面containerd 二选一)

首先安装docker

curl -sSL https://get.daocloud.io/docker | sh

配置docker

{"exec-opts": ["native.cgroupdriver=cgroupfs"],"log-driver": "json-file","log-opts": {"max-size": "800m","max-file": "1" }
}

到下面的链接下载最新版cri-docker
https://github.com/Mirantis/cri-dockerd/tags

[root@vms41 ~]# tar zxf cri-dockerd-0.2.1.amd64.tgz 
[root@vms41 ~]# cp cri-dockerd/cri-dockerd /usr/bin/
[root@vms41 ~]# scp /usr/bin/cri-dockerd 192.168.90.106:/usr/bin/
  • 创建cri-docker启动文件
    启动文件从下面链接找到。
    https://github.com/Mirantis/cri-dockerd/tree/master/packaging/systemd

这里/usr/bin/cri-dockerd一定要加上参数

–pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.8

用来指定所用的pause镜像是哪个,否则默认拉取k8s.gcr.io/pause:3.6,会导致安装失败。
文件内容:
root@master:~# cat /usr/lib/systemd/system/cri-docker.service

[Unit]
Description=CRI Interface for Docker Application Container Engine
Documentation=https://docs.mirantis.com
After=network-online.target firewalld.service docker.service
Wants=network-online.target
Requires=cri-docker.socket[Service]
Type=notify
ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint fd:// --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.8
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always# Note that StartLimit* options were moved from "Service" to "Unit" in systemd 229.
# Both the old, and new location are accepted by systemd 229 and up, so using the old location
# to make them work for either version of systemd.
StartLimitBurst=3# Note that StartLimitInterval was renamed to StartLimitIntervalSec in systemd 230.
# Both the old, and new name are accepted by systemd 230 and up, so using the old name to make
# this option work for either version of systemd.
StartLimitInterval=60s# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity# Comment TasksMax if your systemd version does not support it.
# Only systemd 226 and above support this option.
TasksMax=infinity
Delegate=yes
KillMode=process[Install]
WantedBy=multi-user.target
  • 创建启动文件
    文件内容
    root@master:~# cat /usr/lib/systemd/system/cri-docker.socket
[Unit]
Description=CRI Docker Socket for the API
PartOf=cri-docker.service[Socket]
ListenStream=%t/cri-dockerd.sock
SocketMode=0660
SocketUser=root
SocketGroup=docker[Install]
WantedBy=sockets.target
  • 启动脚本拷贝到工作节点
scp /usr/lib/systemd/system/cri-docker.socket /usr/lib/systemd/system/cri-docker.service 192.168.90.106:/usr/lib/systemd/system/
  • 启动cri-docker并设置开机自动启动
systemctl daemon-reload ; systemctl enable cri-docker --now
  • 查看启动状态
systemctl is-active cri-docker

配置Kubernetes镜像

参考https://developer.aliyun.com/mirror/kubernetes?spm=a2c6h.13651102.0.0.2e611b11BvTeZL

apt-get update && apt-get install -y apt-transport-https
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add - 
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
apt-get update
apt-get install -y kubelet kubeadm kubectl

kubeadm初始化集群(master操作)

以下二选一
忽略 Swap缓存,使用 cri-dockerd

kubeadm init --image-repository registry.aliyuncs.com/google_containers --kubernetes-version=v1.24.2 --pod-network-cidr=10.244.0.0/16 --cri-socket /var/run/cri-dockerd.sock

忽略 Swap缓存,使用 containerd

kubeadm init --image-repository registry.aliyuncs.com/google_containers --kubernetes-version=v1.24.2 --pod-network-cidr=10.244.0.0/16

安装 flannel(master操作)

kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml

把worker加入集群,使用 cri-dockerd (worker操作)

kubeadm join 192.168.90.100:6443  --cri-socket /var/run/cri-dockerd.sock --token 1g8rs2.t1ge709xkhfwx2rc \--discovery-token-ca-cert-hash sha256:8e1815d422526af9f7d138f80a44a6b9af1c364c61d71f70d9a512847e548850 

worker 节点使用 kubectl

  • 创建目录
mkdir -p $HOME/.kube
  • 同时将 admin.conf 传输给工作节点
 scp /etc/kubernetes/admin.conf root@192.168.90.106:$HOME/.kube/config
  • 赋权
sudo chown $(id -u):$(id -g) $HOME/.kube/config
  • 查看节点
kubectl get nodes

这篇关于2. Kubernetes 1.24 安装( cri 使用 containerd 或 cri-docker )的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/357275

相关文章

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7

Centos7安装Mongodb4

1、下载源码包 curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.1.tgz 2、解压 放到 /usr/local/ 目录下 tar -zxvf mongodb-linux-x86_64-rhel70-4.2.1.tgzmv mongodb-linux-x86_64-rhel70-4.2.1/

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

Centos7安装JDK1.8保姆版

工欲善其事,必先利其器。这句话同样适用于学习Java编程。在开始Java的学习旅程之前,我们必须首先配置好适合的开发环境。 通过事先准备好这些工具和配置,我们可以避免在学习过程中遇到因环境问题导致的代码异常或错误。一个稳定、高效的开发环境能够让我们更加专注于代码的学习和编写,提升学习效率,减少不必要的困扰和挫折感。因此,在学习Java之初,投入一些时间和精力来配置好开发环境是非常值得的。这将为我