基于containerd部署的k8s集群

news/2025/10/31 11:18:57/文章来源:https://www.cnblogs.com/sxFu/p/19179243

关闭防火墙、selinux、关闭交换分区配置hosts网上教程很多,就不一一描述,可自行网上查找。

主机清单

系统

K8S集群角色

服务器

主机名

CentOS7.9

Master

192.168.71.138

master

CentOS7.9

Node1

192.168.71.139

node1

CentOS7.9

Node2

192.168.71.140

node2

版本说明

·  contained version1.6.8

·  kubeadm version: 1.24.4

·  kubectl version: 1.24.4

·  kubelet version: 1.24.4

部署

1、配置内核参数

# 临时加载模块
modprobe br_netfilter
# 永久生效(重启后仍保留)
echo 'br_netfilter' | sudo tee /etc/modules-load.d/br_netfilter.conf
modprobe br_netfilter
# 检查文件是否存在
ls /proc/sys/net/bridge/bridge-nf-call-iptables
# 检查模块是否加载
lsmod | grep br_netfilter
##修改内核参数
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
vm.swappiness = 0
EOF
# 禁止使用swap空间,只有当系统OOM时才允许使用它
vm.swappiness = 0  
#生效
sysctl --system  

image

2、配置yum

## 更换阿里yum源
wget -O /etc/yum.repos.d/CenOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
yum chean all
yum makecache
##下载常用的软件
yum install -y vim net-tools  bash-completion wget lrzsz     
##配置国内阿里云docker的repo源yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
## 配置安装k8s组件需要的阿里云的repo源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpghttp://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

3、配置IPVS

yum install  -y ipvsadm ipset sysstat conntrack libseccomp  
cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
ipvs_modules="ip_vs ip_vs_lc ip_vs_wlc ip_vs_rr ip_vs_wrr ip_vs_lblc ip_vs_lblcr ip_vs_dh ip_vs_sh ip_vs_fo ip_vs_nq ip_vs_sed ip_vs_ftp nf_conntrack ip_tables ip_set xt_set ipt_set ipt_rpfilter ipt_REJECT ipip "
for kernel_module in \${ipvs_modules}; do/sbin/modinfo -F filename \${kernel_module} > /dev/null 2>&1if [ $? -eq 0 ]; then/sbin/modprobe \${kernel_module}fi
done
EOF  
chmod 755 /etc/sysconfig/modules/ipvs.modules 
sh /etc/sysconfig/modules/ipvs.modules 
lsmod | grep ip_vs

4、安装Containerd(二进制)

wget https://github.com/containerd/containerd/releases/download/v1.6.8/cri-containerd-1.6.8-linux-amd64.tar.gz

tar zxvf cri-containerd-1.6.8-linux-amd64.tar.gz

image

etc目录:主要为containerd服务管理配置文件及cni虚拟网卡配置文件;

opt目录:主要为gce环境中使用containerd配置文件及cni插件;

usr目录:主要为containerd运行时的二进制文件,包含runc

拷贝二进制可执行文件至$PATH

image

containerd 的安装包中一共有五个文件,通过上面的命令它们被安装到了 /usr/local/bin 目录中:

containerd:即容器的运行时,以 gRPC 协议的形式提供满足 OCI 标准的 API

containerd-releasecontainerd 项目的发行版发布工具

containerd-stresscontainerd压力测试工具

containerd-shim:这是每一个容器的运行时载体,我们在 docker 宿主机上看到的 shim 也正是代表着一个个通过调用 containerd 启动的 docker 容器。

ctr:它是一个简单的 CLI 接口,用作 containerd 本身的一些调试用途,投入生产使用时还是应该配合docker 或者 cri-containerd 部署。

创建初始配置文件

Containerd 的默认配置文件为 /etc/containerd/config.toml

mkdir -p /etc/containerd/

# 创建默认得配置文件

containerd config default > /etc/containerd/config.toml

修改配置

替换镜像源,由于国内环境原因我们需要将 sandbox_image 镜像源设置为阿里云google_containers镜像源。

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

配置镜像加速

vim /etc/containerd/config.toml[plugins."io.containerd.grpc.v1.cri".registry.mirrors][plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]endpoint = ["https://zggody61.mirror.aliyuncs.co"] 
注释:此步骤配置需要为阿里云服务器才可用,非阿里云服务器配置后可忽略,后边下载插件用到了其它镜像源

配置驱动器

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

创建服务管理配置文件

## 拷贝服务管理配置文件到/usr/lib/systemd/system/目录
grep -v ^# etc/systemd/system/containerd.service
mv etc/systemd/system/containerd.service /usr/lib/systemd/system/containerd.service

启动 containerd 服务

systemctl daemon-reload
systemctl enable --now containerd.service
systemctl status containerd.service
containerd  --version

image

安装runc(二进制)

由于二进制包中提供的runC默认需要系统中安装seccomp支持,需要单独安装,且不同版本runCseccomp版本要求不一致,所以建议单独下载runC 二进制包进行安装,里面包含了seccomp模块支持。下载地址:https://github.com/opencontainers/runc/releases

image

chmod +x runc.amd64
mv runc.amd64 /usr/bin/runc
runc -version

image

配置crictl客户端

mv etc/crictl.yaml  /etc/
# 若只有一行可把配置复制
cat  /etc/crictl.yaml 
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///var/run/containerd/containerd.sock
timeout: 10
debug: false

下载并安装kubeadmkubectlkubelet

yum install -y kubelet-1.24.4 kubeadm-1.24.4 kubectl-1.24.4
systemctl enable kubelet && systemctl start kubelet && systemctl status kubelet
#上面可以看到kubelet状态不是running状态,这个是正常的,不用管,等k8s组件起来这个kubelet就正常了。
##注:每个软件包的作用
Kubeadm:  kubeadm是一个工具,用来初始化k8s集群的
kubelet:   安装在集群所有节点上,用于启动Pod的
kubectl:   通过kubectl可以部署和管理应用,查看各种资源,创建、删除和更新各种组件

设置Table键补全

# 让命令可用自动table键进行补全,对新手无法记住命令提供很好的支持,所在主机进行该操作方可使用table补全。
Kubectl命令补全
kubectl completion bash > /etc/bash_completion.d/kubelet
Kubeadm命令补全
kubeadm completion bash > /etc/bash_completion.d/kubeadm

检测安装环境

kubeadm init --dry-run

镜像下载/导入

kubeadm config images list

列出需要使用的镜像列表

kubeadm config images list

拉取镜像

kubeadm config images pull  \

--image-repository  registry.aliyuncs.com/google_containers \

--kubernetes-version  v1.24.4

创建配置文件

创建默认的配置文件

kubeadm config print init-defaults > kubeadm-init.yaml

修改配置文件

apiVersion: kubeadm.k8s.io/v1beta3
bootstrapTokens:
- groups:- system:bootstrappers:kubeadm:default-node-tokentoken: abcdef.0123456789abcdefttl: 24h0m0susages:- signing- authentication
kind: InitConfiguration
localAPIEndpoint:advertiseAddress: 192.168.71.138   #修改为控制节点IP(VIP)bindPort: 6443
nodeRegistration:criSocket: /run/containerd/containerd.sock  #使用containerd为容器运行时imagePullPolicy: IfNotPresentname: 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.24.4 #版本
networking:dnsDomain: cluster.localpodSubnet: 10.244.0.0/16 #指定Pod网段serviceSubnet: 10.96.0.0/12 #指定Service网段
scheduler: {}
---
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind:  KubeProxyConfiguration
mode: ipvs
---
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
cgroupDriver: systemd

初始化

kubeadm init --config kubeadm-init.yaml

Your Kubernetes control-plane has initialized successfully!To start using your cluster, you need to run the following as a regular user:mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/configAlternatively, if you are the root user, you can run:export KUBECONFIG=/etc/kubernetes/admin.confYou should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:https://kubernetes.io/docs/concepts/cluster-administration/addons/

Then you can join any number of worker nodes by running the following on each as root:kubeadm join 192.168.71.138:6443 --token abcdef.0123456789abcdef \--discovery-token-ca-cert-hash sha256:aa8cd7fe008ec286b790526fe1ba403aa93b093e3f001737676f62f6117ba3d4

image

根据初始化成功后的提示对集群进行基础的配置。

mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
export KUBECONFIG=/etc/kubernetes/admin.conf
echo "KUBECONFIG=/etc/kubernetes/admin.conf" >>  ~/.bashrc && source  ~/.bashrc
kubectl get nodes

image

初始化master有问题,可将集群重置,再次初始化master

kubeadm reset

通过下面命令扩展node节点

kubeadm join 192.168.71.138:6443 --token abcdef.0123456789abcdef \--discovery-token-ca-cert-hash sha256:aa8cd7fe008ec286b790526fe1ba403aa93b093e3f001737676f62f6117ba3d4 
注:该token 有效期为24小时。参数  --control-plane 就是加入控制节点,不带该参数就是加入工作节点。

查看集群状态

kubectl get nodes

image

通过查看集群状态可以看到,状态为NotReady,是因为还未安装网络插件,安装网络插件后就正常了,且node的点的角色为空,<none>就表示这个节点是工作节点。  按照如下方法,可以把node1node2ROLES变成work

kubectl label node node1 node-role.kubernetes.io/worker=worker

kubectl label node node2 node-role.kubernetes.io/worker=worker

image

安装插件

下载地址

curl https://projectcalico.docs.tigera.io/archive/v3.23/manifests/calico.yaml -O
##或者
wget https://docs.projectcalico.org/v3.23/manifests/calico.yaml --no-check-certificat

调整calico.yaml如下:

#新增两行配置  直接配置通配符 :value: "interface=ens.*"
- name: IP_AUTODETECTION_METHODvalue: "interface=ens.*"

image

注意:在安装calico网络时,默认安装是IPIP网络。calico.yaml文件中,将CALICO_IPV4POOL_IPIP的值修改成 "off",就能够替换成BGP网络。ens.*是根据自己机器的网络来调整的。这样可以避很多calico网络错误。如下:

image

提前下载Calico镜像

grep image calico.yaml

image

预先下载calico相关的镜像

ctr images pull  docker.io/calico/cni:v3.23.3
ctr images pull  docker.io/calico/node:v3.23.3
ctr images pull  docker.io/calico/kube-controllers:v3.23.3
或(上述因为镜像源得问题pull失败)
ctr images pull quay.io/calico/cni:v3.23.3
ctr images pull quay.io/calico/node:v3.23.3
ctr images pull quay.io/calico/kube-controllers:v3.23.3
安装Calico网络插件
##在其中一个master节点执行即可
注:需要更改calico.yaml 文件中镜像源(docker.io改成quay.io)
kubectl apply -f calico.yaml 
查看node节点和pod状态
kubectl get nodes
kubectl get pods -n kube-system

image

安装CoreDNS域名解析插件

kubeadm安装的k8s集群中,安装Calico网络插件后会自动安装CoreDNS插件

安装Metrics数据采集插件

下载yum文件

##下载最新版本的yaml文件https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml

##指定下载v0.4.1版本https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.4.1/components.yaml

修改yaml文件
mv components.yaml metrics-server.yaml

containers:- args:- --cert-dir=/tmp- --secure-port=10250- --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname- --kubelet-use-node-status-port- --metric-resolution=15s- --kubelet-insecure-tls   #跳过验证SSL证书
image: registry.aliyuncs.com/google_containers/metrics-server:v0.8.0

提前下载镜像

ctr images  pull registry.aliyuncs.com/google_containers/metrics-server:v0.8.0

调整apiserver的配置

需要在kube-apiserver的配置文件中添加–enable-aggregator-routing=true参数来启用聚合认证

vim /etc/kubernetes/manifests/kube-apiserver.yaml

##增加如下内容:- --enable-aggregator-routing=true

image

更新apiserver的配置

kubectl apply -f  /etc/kubernetes/manifests/kube-apiserver.yaml

kubectl get pods -n kube-system

安装metrics-server

kubectl apply -f metrics-server.yaml 

image

## 查看pod状态

kubectl get pods -n kube-system

image

查看节点资源

kubectl top nodes

image

集群验证

kubectl get node

image

 

【参考:https://developer.aliyun.com/article/1323537】

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/951583.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中国大陆Wi-Fi信道

中国大陆 Wi-Fi 信道 先总结一下,目前 WLAN 协议繁多甚至有点混乱,加之各国法规不同限制不同,甚至有些协议专为国家定制(例如802.11j), 导致很多频段使用并不是很明朗,目前中国大陆能够明确可以正常使用的 Wi-F…

AE脚本-MoBar v3.5.1 Win 可提高效率的AE快捷命令脚本工具箱

** 脚本简介** MoBar 是一个节省时间的工具集合,可帮助您在Adob​​e After Effects中快速轻松地创建项目。没有必要在工具之间徘徊,也不必担心事情会花费你多长时间。它旨在让您比以往更快、更高效地工作。 MoBar 配…

“数据筑基” 赋能 “人工智能+”:解构“十五五”新质生产力的核心路径

“十五五”规划建议的发布,不仅是未来五年的施政纲领,更是一份关乎中国经济“形态”与“质态”的深度诊断。当我们穿透“现代化产业体系”、“数字中国”等宏观布局,会发现一条贯穿始终的暗线:“新质生产力的全面唤…

详细介绍:Win11系统JAVA8与IDEA社区版下载安装与配置

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025 年最新推荐!搬家公司推荐排行榜 ,覆盖玄武秦淮等区域专业搬家公司精选榜单南京搬家公司推荐

引言 在南京,搬家需求逐年增长,但消费者在选择搬家公司时却屡屡碰壁。不少公司报价模糊,隐形消费层出不穷,让消费者额外花费冤枉钱;部分公司响应迟缓,预约后迟迟不上门,打乱客户搬家计划;还有些公司服务不专业…

Golang 镜像拉取与 Docker 部署全教程

Golang(简称 Go)是 Google 开发的静态类型编程语言,语法上借鉴了 C 语言的简洁性,但弥补了 C 语言的诸多痛点,比如自带垃圾回收(不用手动管理内存)、强类型安全(减少运行时错误)、原生支持并发(轻松处理高并…

2025年推拉棚供应商年度排名,推拉棚源头厂家/推拉棚制造商推荐

在当今各类户外场景应用中,如物流仓储、商业经营、市政设施等,推拉棚以其灵活便捷的特性,已成为不可或缺的户外设施。然而,市场上推拉棚制造商众多,质量与服务参差不齐。企业和个人在选择时,常面临产品耐用性不佳…

解析2025强网拟态EZMiniAPP

解析2025强网拟态EZMiniAPP微信小程序逆向分析与加密算法破解 一、题目背景与初步分析 1.1 题目描述 本题是一道Mobile类别的CTF挑战题,题目提供了一个文件:__APP__.wxapkg。 1.2 什么是wxapkg文件 .wxapkg是微信小程…

2025 年 10 月 UV 测量仪器/UV LED 配套设备/UV 光固化胶厂家推荐排行榜:专业选型指南与高效应用方案

2025 年 10 月 UV 测量仪器/UV LED 配套设备/UV 光固化胶厂家推荐排行榜:专业选型指南与高效应用方案 随着工业制造技术向精密化、智能化方向发展,紫外光技术应用领域持续扩大。在电子半导体、医疗设备、汽车制造等高…

2025年新疆电线电缆厂家权威推荐榜单:特种电缆/矿用电缆/电力电缆源头厂家精选

随着西部大开发和新能源产业建设的持续推进,新疆电线电缆市场需求呈现稳定增长态势。行业数据显示,2024年西北地区电线电缆市场规模已突破380亿元,其中新疆地区占比达35%,年均增长率保持在12%-15%。电线电缆技术重…

为什么顶级企业愿意为设计买单?

为什么顶级企业愿意为设计买单?在大众认知中,设计常被等同于 “视觉美化”,但劳斯莱斯、国际私人银行、高端医疗集团等顶级企业,愿意为设计支付数倍于普通方案的成本,核心并非追求 “好看”—— 而是因为设计对它…

sg.后台线程-1亿浮点运算用时-方法2

import PySimpleGUI as sg import math import time import threading # 改用标准库的 threading.Eventdef calculate_sqrt_sum(window, stop_event):"""后台计算函数"""total = 10_00…

2025 年混合机厂家最新推荐排行榜:高效盘条式无重力犁刀式锥形卧式螺带连续式等机型优选企业测评结果及核心优势解析

引言 为助力企业精准选购混合机设备,粉体设备行业协会联合专业测评机构开展 2025 年混合机品牌测评工作。本次测评覆盖全国 68 家主流混合机生产企业,采用 “技术实力 + 产品性能 + 服务质量 + 市场口碑” 四维评分体…

note 2

在《程序员修炼之道》“注重实效的途径” 章节中,DRY 原则(Dont Repeat Yourself)和正交性原则,为构建灵活可维护的系统提供了关键方法论。DRY 原则强调 “系统中的每一项知识都必须具有单一、无歧义、权威的表示”…

基于机载相控阵天线的卫星通信链路预算示例:(一) - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025年上海继承律师权威推荐榜单:离婚房产律所/离婚律所/继承律所精选服务商

随着上海家庭财富积累和人口老龄化程度加深,遗产继承案件呈现逐年上升趋势。据上海市法院系统统计,2024年继承纠纷一审案件数量较上年增长12.7%,其中涉及房产分割的继承案件占比高达68%。 在复杂的继承法律案件中,…

基于MATLAB的MFCC特征与高斯混合模型(GMM)语音识别系统

一、系统设计 1. 核心流程 graph TDA[语音采集] --> B[预处理]B --> C[MFCC特征提取]C --> D[GMM模型训练]D --> E[分类识别]B -->|预加重| B1[高通滤波]B -->|分帧加窗| B2[汉明窗]C -->|Mel滤波…

安装Helm

安装包地址:https://get.helm.sh/helm-v3.16.0-linux-amd64.tar.gz 将安装包上传至服务器解压 tar -xf helm-v3.16.0-linux-amd64.tar.gz cd linux-amd64将helm移到/usr/local/bin/目录 mv helm /usr/local/bin/执行h…

vdi镜像转换vmdk虚拟磁盘文件

qemu-img.exe convert -p -f vdi -O vmdk XXXXX.vdi XXXXXX.vmdk -p:表示镜像转换的进度。 -f:后面为源镜像格式 -O:(必须是大写)后面的参数由如下3个部分组成:转换出来的镜像格式 + 源镜像文件名称 + 目标文件…

2025 CSP/NOIp 复习

csp2025 rp++!1.Manacher点击查看代码 //manacher板子 求子串最长回文串的长度 #include<bits/stdc++.h> using namespace std; const int maxn=1.1e7+10; string s; int pal[2*maxn],ans; //pal表示以第i个字…