Ubuntu部署k8sV1.27+containerd

2024-03-15 00:20

本文主要是介绍Ubuntu部署k8sV1.27+containerd,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文中如果有的依赖没办法用apt-get安装,可以直接访问我的网盘,用tar包安装
链接:https://pan.baidu.com/s/1hiozH7KPqKa6IbwBIPb7Ng?pwd=8s4i
提取码:8s4i

1、登录节点使用 hostnamectl 命令设置 hostname(所有主机)
例:hostnamectl set-hostname k8s-master

2、在每个节点上的 /etc/hosts 文件中添加以下内容(所有主机操作)
172.18.10.11 k8s-master
172.18.10.12 k8s-worker1
172.18.10.13 k8s-worker2

3、禁用 swap & 添加内核设置(所有主机操作)
swapoff -a
sed -i ‘/swap/ s%/swap%#/swap%g’ /etc/fstab

4、在所有节点上加载以下内核模块(所有主机操作)
tee /etc/modules-load.d/containerd.conf <<EOF
overlay
br_netfilter
EOF
modprobe overlay
modprobe br_netfilter

5、为 Kubernetes 设置以下内核参数,运行如下的tee命令(所有主机操作)
tee /etc/sysctl.d/kubernetes.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
使其生效(所有主机操作)
sysctl --system

6、安装容器运行时依赖项(所有主机操作)
apt install -y curl gnupg2 software-properties-common apt-transport-https ca-certificates

7、启用 docker 存储库(所有主机操作)
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/docker.gpg

add-apt-repository “deb [arch=amd64] Index of linux/ubuntu/ $(lsb_release -cs) stable”

8、安装 containerd(所有主机操作)
apt update
apt install -y containerd.io(如果报错找不到containerd.io,那就用tar包去装,如果没报错正常安装上了,那就可以跳过下面实线内的步骤)
tar Cxzvf /usr/local containerd-1.7.0-linux-amd64.tar.gz
#创建启动containerd的systemd服务
cat << EOF >> /lib/systemd/system/containerd.service
[Unit]
Description=containerd container runtime
Documentation=https://containerd.io
After=network.target local-fs.target

[Service]
ExecStartPre=-/sbin/modprobe overlay
ExecStart=/usr/local/bin/containerd

Type=notify
Delegate=yes
KillMode=process
Restart=always
RestartSec=5

Having non-zero Limit*s causes performance problems due to accounting overhead

in the kernel. We recommend using cgroups to do container-local accounting.

LimitNPROC=infinity
LimitCORE=infinity
LimitNOFILE=infinity

Comment TasksMax if your systemd version does not supports it.

Only systemd 226 and above support this version.

TasksMax=infinity
OOMScoreAdjust=-999

[Install]
WantedBy=multi-user.target
EOF
(到这里tar包安装就结束了,回归正常的配置步骤)

9、配置 containerd,使它使用 systemd 作为 cgroup(所有主机操作)
containerd config default | sudo tee /etc/containerd/config.toml >/dev/null 2>&1

sed -i ‘s/SystemdCgroup = false/SystemdCgroup = true/g’ /etc/containerd/config.toml

10、将镜像地址换为阿里云地址,否者在初始化时无法拉取到镜像(所有主机操作)
sed -i “s#registry.k8s.io/pause#registry.aliyuncs.com/google_containers/pause#g” /etc/containerd/config.toml
重启并启用 containerd 服务
systemctl daemon-reload
systemctl restart containerd
systemctl enable containerd

12、添加 Kubernetes apt 存储库,下载 Google Cloud 公开签名秘钥(master操作)
curl -fsSLo /etc/apt/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
此操作需要看脸,若脸黑访问不到的话,直接用我网盘里的apt-key.gpg
cp ~/apt-key.gpg /usr/share/keyrings/kubernetes-archive-keyring.gpg 手动cp一下

13、添加 Kubernetes apt仓库(master操作)
echo “deb [signed-by=/etc/apt/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main” | sudo tee /etc/apt/sources.list.d/kubernetes.list
更新索引(所有主机操作)
apt-get update(如果源用不了换一下源,如果还不行,就直接跳过这步,本人亲测可行)
换源
echo “deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main” | sudo tee /etc/apt/sources.list.d/kubernetes.list

14、安装Kubectl, kubeadm 和 kubelet(所有主机操作)

安装基础环境

apt-get install -y ca-certificates curl software-properties-common apt-transport-https curl

curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -

执行配置k8s阿里云源

vim /etc/apt/sources.list.d/kubernetes.list
#加入以下内容
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main

执行更新

apt-get update -y
安装工具
apt-get install -y kubelet kubeadm kubectl
锁定版本,不让k8s组件自动升级(所有主机操作)
apt-mark hold kubelet kubeadm kubectl

15、修改containerd的沙盒(所有主机操作)
vi /etc/containerd/config.toml
在这里插入图片描述

systemctl daemon-reload
systemctl restart containerd
systemctl enable containerd

16、初始化kubernetes集群(master操作)
kubeadm init --image-repository registry.aliyuncs.com/google_containers --apiserver-advertise-address=172.18.10.11 --kubernetes-version v1.27.1 --pod-network-cidr=10.244.0.0/16 --v=5
在这里插入图片描述

如果初始化失败,重新初始化前需要执行kubeadm reset -f来清除初始化失败的文件
用初始化完成后的命令加入node节点(node操作)
kubeadm join k8s-master:6443 --token 04bkvu.6yc4clf05z009t1b --discovery-token-ca-cert-hash sha256:088e804bb2658add7bfd6f6620beb0f6df5307c3371a7d623f8563b5ac30347d
查看node状态(NotReady是正常的,后续装完网络插件就好了)
在这里插入图片描述

如果以后需要添加新的node,需要重新生成新的token以及公钥哈希值
kubeadm token create
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed ‘s/^ .* //’
kubeadm join 192.168.80.137:6443 --token 新生成的Token填写此处 --discovery-token-ca-cert-hash sha256:获取的公钥哈希值填写此处
17、在主节点安装flannel网络插件(master操作)
curl -O https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
如果无法下载flannel的yaml,那就用我网盘的直接apply执行就可以了
kubectl apply -f kube-flannel.yml
查看节点和pod都已经Running了
在这里插入图片描述
在这里插入图片描述

19、在主节点输入集群交互命令,不执行的话,node节点无法使用kubectl(所有主机操作)
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown ( i d − u ) : (id -u): (idu):(id -g) $HOME/.kube/config

到此结束!!!

这篇关于Ubuntu部署k8sV1.27+containerd的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Nginx分布式部署流程分析

《Nginx分布式部署流程分析》文章介绍Nginx在分布式部署中的反向代理和负载均衡作用,用于分发请求、减轻服务器压力及解决session共享问题,涵盖配置方法、策略及Java项目应用,并提及分布式事... 目录分布式部署NginxJava中的代理代理分为正向代理和反向代理正向代理反向代理Nginx应用场景

k8s按需创建PV和使用PVC详解

《k8s按需创建PV和使用PVC详解》Kubernetes中,PV和PVC用于管理持久存储,StorageClass实现动态PV分配,PVC声明存储需求并绑定PV,通过kubectl验证状态,注意回收... 目录1.按需创建 PV(使用 StorageClass)创建 StorageClass2.创建 PV

k8s中实现mysql主备过程详解

《k8s中实现mysql主备过程详解》文章讲解了在K8s中使用StatefulSet部署MySQL主备架构,包含NFS安装、storageClass配置、MySQL部署及同步检查步骤,确保主备数据一致... 目录一、k8s中实现mysql主备1.1 环境信息1.2 部署nfs-provisioner1.2.

在Ubuntu上打不开GitHub的完整解决方法

《在Ubuntu上打不开GitHub的完整解决方法》当你满心欢喜打开Ubuntu准备推送代码时,突然发现终端里的gitpush卡成狗,浏览器里的GitHub页面直接变成Whoathere!警告页面... 目录一、那些年我们遇到的"红色惊叹号"二、三大症状快速诊断症状1:浏览器直接无法访问症状2:终端操作异常

k8s admin用户生成token方式

《k8sadmin用户生成token方式》用户使用Kubernetes1.28创建admin命名空间并部署,通过ClusterRoleBinding为jenkins用户授权集群级权限,生成并获取其t... 目录k8s admin用户生成token创建一个admin的命名空间查看k8s namespace 的

Ubuntu向多台主机批量传输文件的流程步骤

《Ubuntu向多台主机批量传输文件的流程步骤》:本文主要介绍在Ubuntu中批量传输文件到多台主机的方法,需确保主机互通、用户名密码统一及端口开放,通过安装sshpass工具,准备包含目标主机信... 目录Ubuntu 向多台主机批量传输文件1.安装 sshpass2.准备主机列表文件3.创建一个批处理脚

k8s搭建nfs共享存储实践

《k8s搭建nfs共享存储实践》本文介绍NFS服务端搭建与客户端配置,涵盖安装工具、目录设置及服务启动,随后讲解K8S中NFS动态存储部署,包括创建命名空间、ServiceAccount、RBAC权限... 目录1. NFS搭建1.1 部署NFS服务端1.1.1 下载nfs-utils和rpcbind1.1

linux部署NFS和autofs自动挂载实现过程

《linux部署NFS和autofs自动挂载实现过程》文章介绍了NFS(网络文件系统)和Autofs的原理与配置,NFS通过RPC实现跨系统文件共享,需配置/etc/exports和nfs.conf,... 目录(一)NFS1. 什么是NFS2.NFS守护进程3.RPC服务4. 原理5. 部署5.1安装NF

k8s容器放开锁内存限制问题

《k8s容器放开锁内存限制问题》nccl-test容器运行mpirun时因NCCL_BUFFSIZE过大导致OOM,需通过修改docker服务配置文件,将LimitMEMLOCK设为infinity并... 目录问题问题确认放开容器max locked memory限制总结参考:https://Access

通过Docker容器部署Python环境的全流程

《通过Docker容器部署Python环境的全流程》在现代化开发流程中,Docker因其轻量化、环境隔离和跨平台一致性的特性,已成为部署Python应用的标准工具,本文将详细演示如何通过Docker容... 目录引言一、docker与python的协同优势二、核心步骤详解三、进阶配置技巧四、生产环境最佳实践