k8s 1.26.3 安装--使用containerd

2023-10-27

机器准备(或虚拟机)

三台机器

一、环境准备

1、三台机器分别设置主机名
hostnamectl set-hostname master
hostnamectl set-hostname node2
hostnamectl set-hostname node2

2、配置本地dns(修改为自己ip,三台机器都需要配置)

vim /etc/hosts

192.168.22.101 master
192.168.22.102 node2
192.168.22.102 node2

3、时间同步(三台)

yum install -y ntpdate
ntpdate ntp1.aliyun.com

4、关闭防火墙(三台)

systemctl stop firewalld
systemctl disable firewalld

5、关闭selinux(三台)
#重启后生效

sed -i 's/enforcing/disabled/' /etc/selinux/config 

6、禁用swap(三台)
#只是临时禁用

swapoff -a  

#永久禁用(命令方式)

sed -ri 's/.*swap.*/#&/' /etc/fstab

或直接修改/etc/fstab,将swap行注释 # 永久禁用

二、安装容器运行时

k8s使用containerd
1、需要containerd
2、需要runc环境
3、需要cni网络接口
注:containerd默认不会自带runc(真正创建容器的程序),所以需要安装runc程序,以及cni网络插件(容器之间网络通信所需)。

1)containerd安装

1、下载压缩包
进入gihub下载containerd压缩包
文档说明地址:https://github.com/containerd/containerd/blob/main/docs/getting-started.md
下载地址:https://github.com/containerd/containerd/releases , 选择自己的版本,本次选择1.6.20

2、解压到安装目录

tar Cxzvf /usr/local containerd-1.6.20-linux-amd64.tar.gz

3、下载服务文件containerd.service
下载地址:https://raw.githubusercontent.com/containerd/containerd/main/containerd.service
然后复制到/usr/local/lib/systemd/system/containerd.service,

#或者直接复制以下内容到/usr/local/lib/systemd/system/containerd.service
#containerd.service

[Unit]
Description=containerd container runtime
Documentation=https://containerd.io
After=network.target local-fs.target

[Service]
#uncomment to enable the experimental sbservice (sandboxed) version of containerd/cri integration
#Environment="ENABLE_CRI_SANDBOXES=sandboxed"
ExecStartPre=-/sbin/modprobe overlay
ExecStart=/usr/local/bin/containerd

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

LimitNPROC=infinity
LimitCORE=infinity
LimitNOFILE=infinity

TasksMax=infinity
OOMScoreAdjust=-999

[Install]
WantedBy=multi-user.target

4、修改containder配置文件
#生成Containerd配置文件

mkdir -p /etc/containerd
containerd config default > /etc/containerd/config.toml

#3处配置修改:
1、修改沙箱镜像pause为国内镜像

sed -i "s#registry.k8s.io/pause#registry.aliyuncs.com/google_containers/pause#g" /etc/containerd/config.toml

#2设置驱动为system

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

#3设置拉去镜像地址为aliyun镜像地址

sed -i '/\[plugins\."io\.containerd\.grpc\.v1\.cri"\.registry\.mirrors\]/a\      [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]\n        endpoint = ["https://8aj710su.mirror.aliyuncs.com" ,"https://registry-1.docker.io"]' /etc/containerd/config.toml

5、启动

systemctl daemon-reload
systemctl enable --now containerd

2)runc安装

1、runc下载
地址:https://github.com/opencontainers/runc/releases,选择版本,本次选择1.3.0
2、安装runc

install -m 755 runc.amd64 /usr/local/sbin/runc

3)cni安装

1、下载cni压缩包
地址:https://github.com/containernetworking/plugins/releases ,
2、解压安装

mkdir -p /opt/cni/bin
tar Cxzvf /opt/cni/bin cni-plugins-linux-amd64-v1.3.0.tgz

三、k8s安装

1)配置iptables

转发 IPv4 并让 iptables 看到桥接流量配置

#配置cgroup

cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
sudo modprobe overlay
sudo modprobe br_netfilter

#设置所需的 sysctl 参数,参数在重新启动后保持不变

cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward                 = 1
EOF

#应用 sysctl 参数而不重新启动

sudo sysctl --system

#通过运行以下指令确认 br_netfilter 和 overlay 模块被加载:

lsmod | grep br_netfilter
lsmod | grep overlay

#通过运行以下指令确认 net.bridge.bridge-nf-call-iptables、net.bridge.bridge-nf-call-ip6tables 和 net.ipv4.ip_forward 系统变量在你的 sysctl 配置中被设置为 1:

sysctl net.bridge.bridge-nf-call-iptables net.bridge.bridge-nf-call-ip6tables net.ipv4.ip_forward

2)安装kubect、kubelet、kubeadm

1、下载kubect、kubelet、kubeadm

curl -LO https://dl.k8s.io/release/v1.26.3/bin/linux/amd64/kubectl
curl -LO https://dl.k8s.io/release/v1.26.3/bin/linux/amd64/kubelet
curl -LO https://dl.k8s.io/release/v1.26.3/bin/linux/amd64/kubeadm

2、安装到可运行目录

sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
sudo install -o root -g root -m 0755 kubelet /usr/local/bin/kubelet
sudo install -o root -g root -m 0755 kubeadm /usr/local/bin/kubeadm

3、创建kubelet.service
复制到/usr/local/lib/systemd/system 目录

mkdir -p /usr/local/lib/systemd/system
vim /usr/local/lib/systemd/system/kubelet.service

kubelet.service文件写入以下内容。
#kubelet.service

[Unit]
Description=kubelet: The Kubernetes Node Agent
Documentation=https://kubernetes.io/docs/
Wants=network-online.target
After=network-online.target

[Service]
ExecStart=/usr/local/bin/kubelet
Restart=always
StartLimitInterval=0
RestartSec=10

[Install]
WantedBy=multi-user.target

4、创建配置文件10-kubeadm.conf
复制到/usr/local/lib/systemd/system/kubelet.service.d 目录

mkdir -p /usr/local/lib/systemd/system/kubelet.service.d
vim /usr/local/lib/systemd/system/kubelet.service.d/10-kubeadm.conf

文件写入内容如下。
#10-kubeadm.conf

[Service]
Environment="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf"
Environment="KUBELET_CONFIG_ARGS=--config=/var/lib/kubelet/config.yaml"

#This is a file that "kubeadm init" and "kubeadm join" generates at runtime, populating the KUBELET_KUBEADM_ARGS variable dynamically
EnvironmentFile=-/var/lib/kubelet/kubeadm-flags.env
#This is a file that the user can use for overrides of the kubelet args as a last resort. Preferably, the user should use
#the .NodeRegistration.KubeletExtraArgs object in the configuration files instead. KUBELET_EXTRA_ARGS should be sourced from this file.
EnvironmentFile=-/etc/sysconfig/kubelet
ExecStart=
ExecStart=/usr/local/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS

5、启动kubelet

systemctl daemon-reload
systemctl enable kubelet

四、创建k8s集群

1、导出k集群启动默认配置文件

kubeadm config print init-defaults > init.yaml

2、修改inti.yaml文件

  1. 修改advertiseAddress: 192.168.22.101,为自己的master IP
  2. 修改name: master,为自己的主机名
  3. imageRepository: registry.aliyuncs.com/google_containers,修改国内镜像源
  4. 配置网络段
    #serviceSubnet: 10.96.0.0/12
    service-cidr: 10.96.0.0/12
    pod-network-cidr: 10.244.0.0/16
  5. 修改kubelet使用systemd驱动
    kind: KubeletConfiguration
    apiVersion: kubelet.config.k8s.io/v1beta1
    cgroupDriver: systemd
- groups:
  - system:bootstrappers:kubeadm:default-node-token
  token: abcdef.0123456789abcdef
  ttl: 24h0m0s
  usages:
  - signing
  - authentication
kind: InitConfiguration
localAPIEndpoint:
  advertiseAddress: 192.168.22.101
  bindPort: 6443
nodeRegistration:
  criSocket: unix:///var/run/containerd/containerd.sock
  imagePullPolicy: IfNotPresent
  name: master
  taints: null
---
apiServer:
  timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta3
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns: {}
etcd:
  local:
    dataDir: /var/lib/etcd
imageRepository: registry.aliyuncs.com/google_containers
kind: ClusterConfiguration
kubernetesVersion: 1.26.0
networking:
  dnsDomain: cluster.local
#  serviceSubnet: 10.96.0.0/12
  service-cidr: 10.96.0.0/12
  pod-network-cidr: 10.244.0.0/16
scheduler: {}

---
kind: KubeletConfiguration
apiVersion: kubelet.config.k8s.io/v1beta1
cgroupDriver: systemd

【【卸载】】
kubeadm reset
systemctl disable kubelet

rm /usr/local/bin/kubelet
rm /usr/local/bin/kubectl
rm /usr/local/bin/kubeadm

rm /usr/local/lib/systemd/system/kubelet.service
rm -rf /usr/local/lib/systemd/system/kubelet.service.d

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

k8s 1.26.3 安装--使用containerd 的相关文章

随机推荐

  • gradle引入依赖包/maven引入依赖包

    1 打开https mvnrepository com 搜索出需要的jar包 2 点击进入需要jar包 选择maven或gradle的tab页 复制依赖url即可 如图 3 gradle项目的话 点击buildDependents即可 如图
  • 工业机器人仿真参考

    最近有一些朋友看到我做的关于Unity3d仿真机器人的项目 本次我在平台做以分享 希望的朋友或者有需要在此基础做开发的可以参考下 开发工具 下位机 Unity3D 上位机 Visual Studio 机械臂模型 TH6 QKM SCARA
  • Linux内核启动过程学习

    过完年来 敲着键盘都有点生疏了 很多东西都有点忘记了 还有刚上班还有点不习惯 状态还没有转换过来 没有办法趁这个机会就复习一下Linux的启动过程吧 asmlinkage void init start kernel void char c
  • 用python做自动化测试--序

    几年来 都有个想法 写个 用Python做自动化测试 的系列文章 把自己的经验和大家共享 和大家多交流 同时总结下自己掌握的东西 但苦于一直忙 其实准确点的说是自己懒 迟迟没有开始 我想不能再懒了 要不以后会更忙 更懒 我为什么选择pyth
  • Python统计学实例之正态分布:计算男女身高相差>5厘米的概率

    正态分布计算 示例1 正态分布计算实例 计算男女身高相差 gt 5厘米的概率 解题思路 用到的公式 总结 正态分布计算实例 计算男女身高相差 gt 5厘米的概率 假设男生身高 X N 71 20 25 女生身高 Y N 64 16 解题思路
  • Docker安装部署FastDFS详细过程

    FastDFS分布式文件存储的由来 在我们的项目中有很多需要存储的内容出现 比如图片 视频 文件等等 在早期的时候用户量不大 产生的文件也不是很多 这时我们可以把文件和服务程序放在一个服务器中 随着文件越来越多 服务器的资源会被文件资源大量
  • centos7:搭建部署confluence(6.10.0)

    1 test env host ip 20 20 20 20 host name centos7 ssh soft 2 安装jdk sudo rpm ivh jdk 8u181 linux x64 rpm sudo vim etc prof
  • 【C++】对象初始化和清理

    对象的初始化和清理 首先 我们创建完一个类后 当我们需要对类进行初始化 而当我们完成工作后 需要对类进行清理 这些工作 分别需要调用构造函数和析构函数 构造函数和析构函数的定义与特点 构造函数 1 作用 主要作用于对创建的对象成员属性进行初
  • 好的asp.net网站和论坛(转)

    站点推荐 http expert csdn net Expert topic 3008 3008621 xml temp 8 143252E 02 1 ASP Net中怎么样实现水晶报表在客户端打印 ms help MS VSCC 2003
  • linux下svn revert递归恢复

    svn revert R
  • 记住看小电影前一定要检查网址是不是 HTTPS 的,不然…

    看小电影还是浏览正常网站 一定要检查是不是 HTTPS 的 HTTP有可能被中间人攻击和拦截 下面就是详细的 HTTPS 原理 细思极恐 1 HTTP 协议在谈论 HTTPS 协议之前 先来回顾一下 HTTP 协议的概念 1 1 HTTP
  • Wireshark的流量分析例题

    简述流量分析 网络流量分析是记录和分析网络流量以出于性能 安全性 网络操作 管理和排障为目的分析网络流量的过程 它是使用自动技术检查网络流量中的详细级别细节和统计信息的过程 为了更好的去体会流量分析 我们使用wireshark来进行演示 演
  • JAVA学习【2】错误:无法从静态上下文中引用非静态

    编程时遇到 错误 无法从静态上下文中引用非静态 输出10到20的数字 程序如下 public class MyCode1 int count 10 public static void main String args while coun
  • 顺序表的实现与基本操作

    1 顺序表定义 1 1 顺序表定义 静态分配 c语言实现 include
  • sqli-labs 5~6 多命通关攻略

    sqli labs 5 6 多命通关攻略 描述 判断注入类型 正常输入 不正常输入 错误输入 判断 SQL 查询结果的列数 猜测 SQL 查询结果中的列数为两列 猜测 SQL 查询结果中的列数为三列 猜测 SQL 查询结果中的列数为四列 爆
  • 全面了解虚幻引擎 5

    Incredibuild 与 Epic 合作密切 并与虚幻引擎深度集成 因此对于虚幻引擎 5 的发布 我们也是既期待又兴奋 不得不说 虚幻引擎 5 没有辜负我们的期待 在技术上达到了真正的 虚幻 级别 虚幻引擎 4 的进步本身也不少 公正地
  • Python---Anaconda安装

    目录 前言 Anaconda介绍 特点 一 下载安装包 1 1 官网直接下载 1 2 清华镜像网下载 二 安装 三 配置 3 1 配置环境变量 3 2 验证安装 anaconda验证 python版本验证 3 3 anaconda设置 更改
  • 故障分析

    作者 刘晨 网名 bisal 具有十年以上的应用运维工作经验 目前主要从事数据库应用研发能力提升和技术管理相关的工作 Oracle ACE 腾讯云TVP 拥有 Oracle OCM OCP EXIN DevOps Master SCJP 等
  • VUE加解密MD5、RSA(分段)、AES(SHA1PRNG)

    md5方法 使用 crypto js 1 安装 npm install crypto js 2 引用 import CryptoJS from crypto js 3 加密 let md5 CryptoJS MD5 test toStrin
  • k8s 1.26.3 安装--使用containerd

    机器准备 或虚拟机 三台机器 一 环境准备 1 三台机器分别设置主机名 hostnamectl set hostname master hostnamectl set hostname node2 hostnamectl set hostn