k8s1.23.0+ubuntu20.04+docker23+hyperv

news/2024/4/24 0:07:54/文章来源:https://blog.csdn.net/baidu_35805755/article/details/129147308

问题

k8s node节点加入到集群时卡住 “[preflight] Running pre-flight checks”

# master节点重新生成加入命令
kubeadm token create --ttl 0 --print-join-command

参考

注意

k8s1.24+使用containerd而不再使用docker,因此使用k8s1.23版本

环境

在这里插入图片描述

k8s: 1.23.0
ubuntu: 20.04
docker: 23
docker-compose: 1.25.4

主机IP角色
xcrj01192.168.66.10k8s-master01
xcrj02192.168.66.20k8s-node01
xcrj03192.168.66.21k8s-node02

hyper-v ubuntu20.04

参考

hyper-v koolshare

参考

docker

参考
修改daemon.json

{"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn","http://hub-mirror.c.163.com","http://registry.docker-cn.com"],"exec-opts": ["native.cgroupdriver=systemd"]
}

创建systemd所需目录

mkdir -p /etc/systemd/system/docker.service.d

docker-compose

参考

k8s

master

# 切换root用户
sudo su -# 更新源
apt update
# 升级包
apt upgrade -y# 设置hostname,可选
# hostnamectl set-hostname k8s-master01# 备份hosts文件
cp /etc/hosts /etc/hosts-bk
# 添加hosts,见下
vim /etc/hosts# 开启IPVS负载均衡,见下# 设置k8s所需内核参数,见下
vim /etc/sysctl.d/kubernetes.conf
# 应用内核参数
sysctl --system# docker
# 见大标题docker# 永久关闭swap。pod运行在swap分区中会大大影响效率
swapoff -a && sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
# 禁用SELINUX:开启会限制服务进程访问资源
setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
# 安装必要包
apt install -y curl gnupg2 software-properties-common apt-transport-https ca-certificates
# 开启路由功能
sysctl -w net.ipv4.ip_forward=1
# 重启虚拟机系统# kubernetes
# add aliyun/kubernetes apt key
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
# add aliyun/Kubernetes apt repository
apt-add-repository "deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main"
# 检查更新
apt update
# 安装kubelet kubeadm kubectl
apt install -y kubelet=1.23.0-00 kubeadm=1.23.0-00 kubectl=1.23.0-00
# 锁定版本,不随apt upgrade更新
apt-mark hold kubelet kubeadm kubectl
# 查看kubeadm版本
kubeadm version
# 生成初始化文件
kubeadm config print init-defaults > kubeadm-config.yaml
# 修改初始化文件,见下
# 初始化kubernetes
kubeadm init --config=kubeadm-config.yaml --v=6 --upload-certs | tee kubeadm-init.log# 下面的命令来自 保存打印的内容,推荐使用普通用户
su xcrj01
## 普通用户执行这个,To start using your cluster, you need to run the following as a 
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
## root用户执行这个,Alternatively, if you are the root user, you can run
export KUBECONFIG=/etc/kubernetes/admin.conf# 配置CNI网络
# You should now deploy a pod network to the cluster. 安装calico网络组件
# kubectl apply -f "https://docs.projectcalico.org/manifests/calico.yaml"
# 暂时使用Flannel(基于L2)构建扁平化的网络,以后升级到Calico(完全基于L3)
sudo kubectl apply -f "https://github.com/flannel-io/flannel/blob/master/Documentation/kube-flannel.yml"

hosts

   #master01vi /etc/hosts192.168.66.10 k8s-master01192.168.66.20 k8s-node01192.168.66.21 k8s-node02#node01vi /etc/hosts192.168.66.10 k8s-master01192.168.66.20 k8s-node01#node02vi /etc/hosts192.168.66.10 k8s-master01192.168.66.21 k8s-node02

开启IPVS负载均衡

modprobe br_netfilter

cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
modprobe br_netfilter
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_ipv4

kubernetes.conf

net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1

kubeadm-config.yaml
增加podSubnet;修改kubernetesVersion;修改advertiseAddress(masterIP);修改imageRepository为阿里云

   apiVersion: kubeadm.k8s.io/v1beta2bootstrapTokens:- groups:- system:bootstrappers:kubeadm:default-node-tokentoken: abcdef.0123456789abcdefttl: 24h0m0susages:- signing- authenticationkind: InitConfigurationlocalAPIEndpoint:advertiseAddress: 192.168.66.10bindPort: 6443nodeRegistration:criSocket: /var/run/dockershim.sockname: k8s-master01taints:- effect: NoSchedulekey: node-role.kubernetes.io/master---apiServer:timeoutForControlPlane: 4m0sapiVersion: kubeadm.k8s.io/v1beta2certificatesDir: /etc/kubernetes/pkiclusterName: kubernetescontrollerManager: {}dns:type: CoreDNSetcd:local:dataDir: /var/lib/etcdimageRepository: registry.aliyuncs.com/google_containerskind: ClusterConfigurationkubernetesVersion: v1.23.0networking:dnsDomain: cluster.localpodSubnet: 10.244.0.0/16serviceSubnet: 10.96.0.0/12scheduler: {}

node

# 切换root用户
sudo su -# 更新源
apt update
# 升级包
apt upgrade -y# 设置hostname,可选
# hostnamectl set-hostname k8s-master01# 备份hosts文件
cp /etc/hosts /etc/hosts-bk
# 添加hosts,见下
vim /etc/hosts# 开启IPVS负载均衡,见下# 设置k8s所需内核参数,见下
vim /etc/sysctl.d/kubernetes.conf
# 应用内核参数
sysctl --system# docker
# 见大标题docker# 永久关闭swap。pod运行在swap分区中会大大影响效率
swapoff -a && sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
# 禁用SELINUX:开启会限制服务进程访问资源
setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
# 安装必要包
apt install -y curl gnupg2 software-properties-common apt-transport-https ca-certificates
# 开启路由功能
sysctl -w net.ipv4.ip_forward=1
# 重启虚拟机系统# kubernetes
# add aliyun/kubernetes apt key
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
# add aliyun/Kubernetes apt repository
apt-add-repository "deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main"
# 检查更新
apt update
# 安装kubelet kubeadm kubectl
apt install -y kubelet=1.23.0-00 kubeadm=1.23.0-00 kubectl=1.23.0-00
# 锁定版本,不随apt upgrade更新
apt-mark hold kubelet kubeadm kubectl
# 查看kubeadm版本
kubeadm version# 下面的命令来自 保存打印的内容,推荐使用普通用户
su xcrj02
# 来自kubeadm-init.log文件,192.168.66.10 masterIP
sudo kubeadm join 192.168.66.10:6443 --token xxcbh2.xdulqkbvvrup3b90 \--discovery-token-ca-cert-hash sha256:b84434080d676bf402aba832343faf07f119b2d261b95440ff47d67fd4d78eee

hosts

   #master01vi /etc/hosts192.168.66.10 k8s-master01192.168.66.20 k8s-node01192.168.66.21 k8s-node02#node01vi /etc/hosts192.168.66.10 k8s-master01192.168.66.20 k8s-node01#node02vi /etc/hosts192.168.66.10 k8s-master01192.168.66.21 k8s-node02

开启IPVS负载均衡

modprobe br_netfilter

cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
modprobe br_netfilter
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_ipv4

kubernetes.conf

net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1

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

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

相关文章

TestNG和Junit的区别,测试框架该如何选择?

要想知道两个框架的区别&#xff0c;首先分别介绍一下两个框架。 TestNG是一个java中的开源自动化测试框架&#xff0c;其灵感来自JUnit和NUnit&#xff0c;TestNG还涵盖了JUnit4整个核心的功能&#xff0c;但引入了一些新的功能&#xff0c;使其功能更强大&#xff0c;使用更…

记一次docker虚拟机横向移动渗透测试

本次渗透在几个docker虚拟机间多次横向移动&#xff0c;最终找到了一个可以进行docker逃逸的出口&#xff0c;拿下服务器。渗透过程曲折但充满了乐趣&#xff0c;入口是172.17.0.6的docker虚拟机&#xff0c;然后一路横向移动&#xff0c;最终在172.17.0.2出实现了docker逃逸&a…

【vue2每日小知识】实现store中modules模块的封装与自动导入

&#x1f973;博 主&#xff1a;初映CY的前说(前端领域) &#x1f31e;个人信条&#xff1a;想要变成得到&#xff0c;中间还有做到&#xff01; &#x1f918;本文核心&#xff1a;省去我们store仓库中分模块时的需要每次导入index的问题 目录 【前言】在store中如何简…

ELK日志分析--Filebeat

ELK架构 Filebeat简介 Filebeat安装 Filebeat简单使用 专用日志搜集模块 案例模块-Nginx 模块 重读日志文件 使用Processors(处理器)过滤和增强数据 1.ELK架构 2.Filebeat简介 可以使用 Filebeat 收集各种日志&#xff0c;之后发送到指定的目标系统上&#xff0c;但是同…

软件测试面试题 —— 整理与解析(1)

&#x1f60f;作者简介&#xff1a;博主是一位测试管理者&#xff0c;同时也是一名对外企业兼职讲师。 &#x1f4e1;主页地址&#xff1a;&#x1f30e;【Austin_zhai】&#x1f30f; &#x1f646;目的与景愿&#xff1a;旨在于能帮助更多的测试行业人员提升软硬技能&#xf…

【华为OD机试真题】用 C++ 实现 - 数字加减游戏

最近更新的博客 华为OD机试 - 入栈出栈(C++) | 附带编码思路 【2023】 华为OD机试 - 箱子之形摆放(C++) | 附带编码思路 【2023】 华为OD机试 - 简易内存池 2(C++) | 附带编码思路 【2023】 华为OD机试 - 第 N 个排列(C++) | 附带编码思路 【2023】 华为OD机试 - 考古…

程序员如何发展第二职业?这几种副业方式超赚钱

很多程序员曾表示&#xff0c;虽然月薪一两万&#xff0c;但有时候还是会焦虑。 尤其是遇上了年初裁员年底裁员这样的就业环境&#xff0c;焦虑就会逐步放大&#xff0c;这时候副业赚钱的重要性就体现出来了。 发展第二职业&#xff0c;可以让程序员们增加抗风险能力&#xf…

数据结构-考研难点代码突破(树型查找 - 红黑树(RBT)插入流程图,删除)

文章目录1. 红黑树的定义和性质红黑树的插入操作流程红黑树的删除&#xff08;了解&#xff09;1. 红黑树的定义和性质 红黑树查找与删除的效率和AVL树相同。 但是因为AVL树在插入或删除节点可能破坏AVL树结构&#xff0c;而重新调整树的开销大。所以引出了红黑树。 红黑树的…

【Jmeter】ForEach控制器

一、什么是ForEach控制器 ForEach控制器是遍历某个数组读取不同的变量值&#xff0c;来控制其下的采样器或控制器执行一次或多次。而这个数组可以是用户自定义变量&#xff0c;也可以是从前面接口请求中提取到需要的数据&#xff0c;然后进行遍历循环。 二、ForEach控制器相关…

技能提升:Python技术应用工程师职业技能提升

职业技术培训-Python技术应用工程师分为高级培训班、中级培训班及初级培训班。 Python是一种跨平台的计算机程序设计语言&#xff0c;是一个高层次的结合了解释性、编译性、互动性和面向对象的语言。最初被设计用于编写自动化脚本Shell&#xff08;适用于Linux操作系统&#xf…

Linux PWM 开发指南

Linux PWM 开发指南 1 概述 1.1 编写目的 介绍 PWM 模块的详细设计方便相关人员进行 PWM 模块的代码设计开发。 1.2 使用范围 适用于 Linux-3.10&#xff0c;linux-4.4 和 Linux-4.9 内核&#xff0c;Linux-5.4 内核。 1.3 相关人员 PWM 驱动的开发人员/维护人员等 2 术…

数据库系统概论——绪论

1、绪论 1.1、数据库系统概述 数据库系统的构成示意图 1.1.1、数据库系统基本概念 基本概念&#xff1a;数据、数据库、数据库管理系统和数据库系统 1&#xff09;数据&#xff08;data&#xff09; 定义&#xff1a;描述事物的符号记录称为数据数据是数据库中存储的基本对象…

中科检测赴中科院广州电子CASAIM开展座谈会,围绕3D打印、三维扫描和精密测量展开深入交流

2月9日&#xff0c;中科检测技术服务(广州)股份有限公司&#xff08;简称&#xff1a;中科检测&#xff09;一行到访中科院广州电子技术有限公司&#xff0c;参观广东省增材制造工程实验室和三维扫描及精密测量重点实验室&#xff0c;就3D打印、三维扫描和精密测量相关技术内容…

NTP同步时钟为医院提供标准的时间信号

NTP同步时钟应用于城市重要公共领域&#xff0c;如车站、学校、医院、等。NTP同步时钟可提供准确的公众时间&#xff0c;为人们的日常生活提供便利&#xff0c;避免了因时钟不准确而带来的不便。NTP同步时钟采用智能模块化设计&#xff0c;与同类产品相比&#xff0c;更突出了安…

JavaScript Web API实战:7个小众技巧让你的网站瞬间提升用户体验

随着技术的日新月异&#xff0c;为开发人员提供了令人难以置信的新工具和API。但据了解&#xff0c;在100 多个 API中&#xff0c;只有5%被开发人员积极使用。 让我们来看看一些有用的Web API&#xff0c;它们可以帮助您将网站推向月球&#xff01; 1、 截屏接口 Screen Capt…

ELK日志分析--Logstash

Logstash简介 Logstash安装 测试运行 配置输入和输出 使用Geoip过滤器插件增强数据编辑 配置接收 Beats 的输入 1.Logstash简介 Logstash管道具有两个必需元素input和output&#xff0c;以及一个可选元素filter。输入插件使用来自源的数据&#xff0c;过滤器插件根据你的…

shell的测试语句

一、shell的条件测试语句 在写shell脚本时&#xff0c;经常遇到的问题就是判断字符串是否相等&#xff0c;可能还要检查文件状态或进 行数字测试&#xff0c;只有这些测试完成才能做下一步动作。 1.1、shell脚本中的条件测试如下&#xff1a; 1、文件测试 2、字符串测试 3、数…

《计算机组成与系统结构(第二版) 裘雪红 李伯成 西安电子科技大学出版社》课后习题答案(带解析)(三)

声明&#xff1a;此系列答案配套《计算机组成与系统结构&#xff08;第二版&#xff09; 裘雪红 李伯成 西安电子科技大学出版社》一书相关内容。所有内容为博主个人编辑&#xff0c;仅作参考学习交流之用&#xff0c;转载请注明出处。如发现错误&#xff0c;请联系博主及时勘误…

java JMM 内存屏障

内存屏障的目的 每个CPU都会有自己的缓存&#xff08;有的甚至L1,L2,L3&#xff09;&#xff0c;缓存的目的就是为了提高性能&#xff0c;避免每次都要向内存取。但是这样的弊端也很明显&#xff1a;不能实时的和内存发生信息交换&#xff0c;分在不同CPU执行的不同线程对同一…

基于SPI的增强式插件框架设计

很久之前&#xff0c;为了诊断线上的问题&#xff0c;就想要是能有工具可以在线上出问题的时候&#xff0c;放个诊断包进去马上生效&#xff0c;就能看到线上问题的所在&#xff0c;那该是多么舒服的事情。后来慢慢的切换到 java 领域后&#xff0c;这种理想也变成了现实&#…