当前位置: 首页 > news >正文

centos7系统-kubeadm安装k8s集群(v1.26版本)亲测有效,解决各种坑可供参考

文章目录

  • 硬件要求
  • 可省略的步骤
    • 配置虚拟机ip
    • 设置阿里镜像源
  • 各服务器初始化配置
    • 配置主节点的主机名称
    • 配置从节点的主机名称
    • 配置各节点的Host文件
    • 关闭各节点的防火墙
    • 关闭selinux
    • 永久禁用各节点的交换分区
    • 同步各节点的时间
    • 将桥接的IPv4流量传递到iptables的链(三台都执行)
  • 在所有节点安装docker
  • 在所有节点安装容器运行时cri-dockerd
  • 在所有节点安装 kubenetes相关组件
  • 重启虚拟机(必要)
  • 在master节点安装部署k8s master
    • 查看国内镜像
    • 所有master节点拉取k8s镜像
    • 初始化master节点(仅在master节点执行)
  • 在集群中加入node节点(仅在node节点执行)
  • 查看集群节点信息
  • 安装集群网络(CNI)本文选择Calico
  • 问题排查
  • 使用rancher管理k8s集群
  • 更多内容请参考gitee地址

参考: Debian11之基于kubeadm安装K8S(v1.26.0) 集群

硬件要求

1、Master主机:2核CPU、4G内存、20G硬盘
2、Node主机:4+核CPU、8G+内存、40G+硬盘
2、集群中的所有机器的网络彼此均能相互连接(公网和内网都可以)
3、节点之中不可以有重复的主机名、MAC 地址或 product_uuid
4、开启机器上的某些端口
5、为了保证 kubelet 正常工作,必须禁用交换分区

可省略的步骤

配置虚拟机ip

ONBOOT=yes
IPADDR=192.168.72.139
NETMASK=255.255.255.0
GATEWAY=192.168.72.2
DNS1=8.8.8.8
DNS2=114.114.114.114
在这里插入图片描述

systemctl restart netowrk

设置阿里镜像源

curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# 清除yum缓存
yum clean all
# 缓存阿里云镜像
yum makecache

各服务器初始化配置

配置主节点的主机名称

hostnamectl set-hostname k8smaster && hostname # 设置主节点1的主机名称

配置从节点的主机名称

hostnamectl set-hostname k8snode01 && hostname # 设置从节点1的主机名称

配置各节点的Host文件

#根据自己设备ip配置
vi /etc/hosts # 编辑文件,注意不能有空格
192.168.111.30 k8smaster
192.168.111.33 k8snode01

关闭各节点的防火墙

systemctl disable firewalld && systemctl stop firewalld

关闭selinux

  • 查看selinux信息

    sestatus
    

    在这里插入图片描述

  • 临时禁用
    setenforce 0

  • 永久禁用
    1、打开/etc/sysconfig/selinux文件
    2、将配置SELinux=enforcing改为SELinux=disabled

    vi /etc/sysconfig/selinux
    SELINUX=disabled
    

永久禁用各节点的交换分区

swapoff -a && sed -i 's/.*swap.*/#&/' /etc/fstab # 注释掉swap那一行
free -h 查看是分区空间

同步各节点的时间

参考: K8S学习笔记之CentOS7集群使用Chrony实现时间同步

yum install chrony -y

修改配置文件

vim /etc/chrony.conf
修改时间服务器为阿里云服务器 ntp1.aliyun.com
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
# server 0.centos.pool.ntp.org iburst
# server 1.centos.pool.ntp.org iburst
# server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server ntp1.aliyun.com iburst

启动服务

systemctl enable chronyd.service && systemctl start chronyd.service && systemctl status chronyd.service

每台节点查看时间是否一致

date 

将桥接的IPv4流量传递到iptables的链(三台都执行)

vim /etc/sysctl.d/k8s.conf 
#写入如下两行的参数
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1#使配置生效命令
sysctl --system # 生效

在所有节点安装docker

参考: centos7安装Docker详细步骤(无坑版教程)
本次安装docker版本
在这里插入图片描述
配置docker参数

vim /etc/docker/daemon.json
{"exec-opts": ["native.cgroupdriver=systemd"],"registry-mirrors": ["https://rrnv06ig.mirror.aliyuncs.com","https://reg-mirror.qiniu.com","https://docker.mirrors.ustc.edu.cn"]
}
#重启docker
systemctl daemon-reload && systemctl start docker && systemctl enable docker

查看docker信息

docker info

在所有节点安装容器运行时cri-dockerd

参考:centos7 部署 k8s1.25.3 版本 (使用cri-dockerd方式安装)

  • cri-docker git 地址:
    https://github.com/Mirantis/cri-dockerd/releases
  • 通过rpm安装:
    rpm -ivh cri-dockerd-0.3.1-3.el7.x86_64.rpm
  • 配置cri-docker使用国内镜像
    vim /usr/lib/systemd/system/cri-docker.service
  • 修改配置如下:
    ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint fd:// --pod-infra-container-image registry.aliyuncs.com/google_containers/pause:3.9
  • 启动服务
    systemctl daemon-reload && systemctl start cri-docker && systemctl enable cri-docker
  • 查看服务状态
    systemctl status cri-docker

在所有节点安装 kubenetes相关组件

  • 参考:k8s–使用 kubeadm 搭建 k8s 1.25.2 版本
  • 配置yum 源
    vim /etc/yum.repos.d/kubernetes.repo
    [kubernetes]
    name=Kubernetes
    baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
    enabled=1
    gpgcheck=1
    repo_gpgcheck=1
    gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
    
  • 安装kubeadm、kubelete、kubectl 组件
yum install -y kubelet kubeadm kubectl
systemctl enable kubelet --now

重启虚拟机(必要)

  • 配置完前面的信息之后需要重启虚拟机,否则会造成 api-server等容器启动异常

在master节点安装部署k8s master

查看国内镜像

 kubeadm config images list --image-repository registry.aliyuncs.com/google_containers

在这里插入图片描述

所有master节点拉取k8s镜像

kubeadm config images pull --kubernetes-version=v1.26.1 --image-repository registry.aliyuncs.com/google_containers --cri-socket unix:///var/run/cri-dockerd.sock

docker images 查看镜像
在这里插入图片描述

初始化master节点(仅在master节点执行)

  • 初始化命令
kubeadm init --apiserver-advertise-address=192.168.72.139 --kubernetes-version=v1.26.1 --pod-network-cidr=10.244.0.0/16  --service-cidr=10.96.0.0/12 --token-ttl=0 --cri-socket=unix:///var/run/cri-dockerd.sock --image-repository registry.aliyuncs.com/google_containers --upload-certs --ignore-preflight-errors=all
  • 初始化成功之后的打印
    在这里插入图片描述

  • 按照提示执行如下命令

 mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/config

在集群中加入node节点(仅在node节点执行)

  • 为了使之前的配置生效(重启节点)
    在这里插入图片描述
    复制上图中的命令 并且设置cri-socket, 命令如下:
kubeadm join 192.168.72.139:6443 --token tbrqt5.e9xje0c0i1vv6b66 --discovery-token-ca-cert-hash sha256:f27da12089c64c1c5611ed5b6e008032e07988cc5fbbf190899314d098cfb0fb --cri-socket=unix:///var/run/cri-dockerd.sock

在这里插入图片描述

查看集群节点信息

在master节点执行如下命令

kubectl get nodes

在这里插入图片描述

安装集群网络(CNI)本文选择Calico

参考官网地址:https://docs.tigera.io/calico/3.25/getting-started/kubernetes/self-managed-onprem/onpremises
在这里插入图片描述
在这里插入图片描述
查看calico支持的kubernetes版本信息
https://docs.tigera.io/calico/3.25/getting-started/kubernetes/requirements
在这里插入图片描述

  • 安装 calico 遇到的问题以及解决方法
    在这里插入图片描述
    遇到上述报错表示calico版本和k8s版本不匹配, 可根据上述步骤下载对应的calico版本
  • 可以先下载如下版本的镜像
calico/node                 v3.25.0  
calico/pod2daemon-flexvol   v3.25.0   
calico/cni                  v3.25.0 
calico/kube-controllers     v3.25.0  
  • 安装calico网络步骤,按照官网的步骤执行如下两条命令
curl https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/calico.yaml -O
kubectl apply -f calico.yaml

结果如下:
在这里插入图片描述

  • 此时查看集群信息
kubectl get nodes
  • 查看pod信息
kubectl get pods -A 

在这里插入图片描述
此时集群状态变成Ready表示calico已经成功安装

步步踩坑啊-------------------------奖励自己不放弃,哈哈哈

问题排查

1、在安装calico网络之前coredns一直处于pending状态,

  • 查看coredns的配置文件命令
    kubectl edit cm coredns -n kube-system
  • 查看集群中的所有pod命令
    kubectl get pods -A
  • 查看pod pending状态原因,括号中内容是参数
    kubectl describe/delete/logs pod (name) -n (namespace)
  • 查看集群节点信息
    kubectl get nodes
    结论:coredns只有在网络安装成功之后才能够被调度到节点上运行,
    2、calico的pod一直处于拉取镜像失败问题导致网络一直不好
    解决:手动下载calico的docker镜像到所有节点
    calico/kube-controllers v3.25.0 5e785d005ccc 5 weeks ago 71.6MB
    calico/cni v3.25.0 d70a5947d57e 5 weeks ago 198MB
    calico/pod2daemon-flexvol v3.25.0 ed8b7bbb113f 5 weeks ago 14.6MB
    calico/node v3.25.0 08616d26b8e7 5 weeks ago 245MB
例子:docker pull calico/cni:v3.25.0
  • 所有pod都正常运行
    在这里插入图片描述
  • 节点状态变成Ready
    在这里插入图片描述

使用rancher管理k8s集群

docker打包镜像和容器

Rancher中导入新搭建的Kubernetes集群
在这里插入图片描述
在这里插入图片描述
通过kubelet下载镜像失败问题,更换docker镜像源解决

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

添加成功之后集群状态是Active
在这里插入图片描述

更多内容请参考gitee地址

创作不易:觉得内容不错的可以点个start,感谢支持!
gitee地址:https://gitee.com/full-stack-learn/fs/

相关文章:

centos7系统-kubeadm安装k8s集群(v1.26版本)亲测有效,解决各种坑可供参考

文章目录硬件要求可省略的步骤配置虚拟机ip设置阿里镜像源各服务器初始化配置配置主节点的主机名称配置从节点的主机名称配置各节点的Host文件关闭各节点的防火墙关闭selinux永久禁用各节点的交换分区同步各节点的时间将桥接的IPv4流量传递到iptables的链(三台都执行…...

帮助指令 man ,help及文档常用管理指令

帮助指令 man,help 1. man 当我们想要了解某个命令如何使用,及选项的含义是什么以及配置文件的帮助信息时,可以使用 man [命令或配置文件],这样便可以获得到帮助提示信息了。 语法格式:man [命令或者配置文件] 比如…...

电子科技大学操作系统期末复习笔记(五):文件管理

目录 前言 文件管理:基础 基本概念 文件 文件系统 文件系统的实现模型 文件的组成 文件名 文件分类 文件结构 逻辑结构 物理结构 练习题 文件管理:目录 文件控制块FCB FCB:File Control Block FCB信息 目录 基本概念 目…...

SpringBoot+ActiveMQ-发布订阅模式(生产端)

SpringBootActiveMQ-发布订阅模式(生产端)Topic 主题* 消息消费者(订阅方式)消费该消息* 消费生产者将发布到topic中,同时有多个消息消费者(订阅)消费该消息* 这种方式和点对点方式不同&#xf…...

Android实例仿真之三

目录 四 Android架构探究 五 大骨架仿真 六 Android实例分析思路拓展 四 Android架构探究 首先,Android系统所带来的好处,就在于它本身代码的开放性,这提供了一个学习、借鉴的平台。这对分析仿真而言,本身就是一大利好&#xf…...

关于MySQL的limit优化

1、前提 提示:只适用于InnoDB引擎 2、InnoDB存储特点 它把索引和数据放在了一个文件中,就是聚集索引。这与MyISAM引擎是不一样的。 3、SQL示例 -- 给cve字段建立索引 select * from cnnvd where cveCVE-2022-24808 limit 300000,10;由于M…...

Java-Stream流基本使用

collection.stream将会破坏原有的数据结构&#xff0c;可以通过collect方法收集&#xff0c;可以用Collectors提供的构造器&#xff0c;add等方法构造形成新的数据结构。 HashSet<List<Integer>> rs new HashSet<>(); rs.stream().toList();Collection集合转…...

Liunx(狂神课堂笔记)

一.常用命令 1. cd 切换目录 cd ./* 当前目录cd /* 绝对路径cd .. 返回上一级目录cd ~ 回到当前目录pwd …...

【史上最全面esp32教程】点灯大师篇

文章目录前言ESP32简介认识arduino的两个函数点灯步骤函数介绍LED灯闪烁流水灯总结前言 esp32有很多的功能&#xff0c;例如wifi&#xff0c;蓝牙等&#xff0c;这节我们学习最简单的点灯。 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 ESP32简介 …...

【Java 面试合集】内存中为什么要区分栈和堆

内存中为什么要区分栈和堆 1. 概述 嗨&#xff0c;大家好Java 面试合集又来了&#xff0c;今天我们分享的主题很大众化以及普通。无论是Java 语言本身还是别的语言都会有所涉及&#xff0c;但是今天我们从Java角度来讲下 2. 分析 今天我们会从多个方向来分享这个话题 2.1 栈是…...

【NLP实战】Python字符串处理

一、Python字符串基本操作 1. 去掉前后的特殊字符&#xff08;strip&#xff09; Python的strip操作可以去除字符串前后的空格&#xff08;不改变原串&#xff09;下例将前后的空格均删掉&#x1f447; str 人工智能 str.strip() # OUT:人工智能rstrip删除右边的空格&a…...

17.CSS伪类

举一个简单的例子来说明什么是伪类&#xff1f; 从之前的代码中&#xff0c;如下图&#xff0c;我们像给这两个列表中的某一列单独设置样式&#xff0c;我们该如何做呢&#xff1f; 我们肯定会选择在li标签上添加class去实现&#xff0c;如下 开始标记结束标记实际元素 <…...

数据链路层

一.以太网数据链路层考虑的是相邻两个节点&#xff08;通过网线/光纤、无线直接相连的两个设备&#xff09;之间的传输&#xff0c;这里的典型协议中最知名的就是“以太网”这个协议了数据链路层&#xff0c;也规定了物理层的内容以太网帧格式&#xff1a;IP地址用来描述整个传…...

投票需要什么流程微信投票互助平台的免费投票平台搭建

“最美家政人”网络评选投票_免费小程序投票推广_小程序投票平台好处手机互联网给所有人都带来不同程度的便利&#xff0c;而微信已经成为国民的系统级别的应用。现在很多人都会在微信群或朋友圈里转发投票&#xff0c;对于运营及推广来说找一个合适的投票小程序能够提高工作效…...

数据结构——算法的时间复杂度

&#x1f307;个人主页&#xff1a;_麦麦_ &#x1f4da;今日名言&#xff1a;生命中曾经有过的所有灿烂&#xff0c;都终究需要用寂寞来偿还。——《百年孤独》 目录 一、前言 二、正文 1.算法效率 1.1如何衡量一个算法的好坏 1.2算法的复杂度 2. 时间复杂度 2.1时间复杂度的…...

Go基础-类型

文章目录1 bool2 有符号整数3 无符号整数4 浮点数5 复数6 string7 关于类型转型1 bool bool类型有两个值&#xff0c;一个是true&#xff0c;一个是false。 测试 package mainimport "fmt"func main() {a : trueb : falsec : a && bd : a || bfmt.Println(a…...

良许翻天覆地的2022年

大家好&#xff0c;我是良许&#xff0c;新年快乐呀~ 在我女室友坚持不懈的努力之下&#xff0c;2022年的最后一天我终于被她传染了&#xff0c;阳了~ 此时的我&#xff0c;正顶着37多度的低烧写下这篇年终总结。 2022年&#xff0c;对于大多数人而言&#xff0c;封控是主旋…...

node+vue微信小程序的社区后勤报修系统

社区后勤报修系统小程序进行总体设计和详细设计。总体设计主要包括小程序功能设计、小程序总体结构设计、小程序数据结构设计和小程序安全设计等&#xff1a;详细设计主要包括社区后勤报修系统小程序数据库访问的实现,主要功能模块的具体实现,模块实现关键代码等。最后对社区后…...

WSL(Windows Subsystem for Linux)

一、WSL优势 •传统方式&#xff1a;获取Linux操作系统环境&#xff0c;必须安装完整的虚拟机&#xff0c;如VMware•WSL&#xff1a;以非常轻量化的方式&#xff0c;得到Linux系统环境总结&#xff1a;WSL更方便&#xff0c;简单、好用、轻量化、省内存 二、什么是WSL ①不…...

华为OD机试题 - 单词反转(JavaScript)

最近更新的博客 华为OD机试题 - 任务总执行时长(JavaScript) 华为OD机试题 - 开放日活动(JavaScript) 华为OD机试 - 最近的点 | 备考思路,刷题要点,答疑 【新解法】 华为OD机试题 - 最小步骤数(JavaScript) 华为OD机试题 - 任务混部(JavaScript) 华为OD机试题 - N 进…...

长期使用Taotoken聚合API对项目开发效率的实际影响

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 长期使用Taotoken聚合API对项目开发效率的实际影响 在为期数月的项目开发周期中&#xff0c;我们团队将Taotoken作为所有大模型调用…...

LinkSwift:九大网盘直链下载的技术革新与优雅突围

LinkSwift&#xff1a;九大网盘直链下载的技术革新与优雅突围 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云盘…...

037、LVGL动画类型与参数配置

LVGL动画类型与参数配置 上周帮一个做智能家居面板的客户调试,遇到个挺典型的坑:他用了lv_anim_set_path_cb()自定义了一个缓动曲线,结果动画跑起来像抽风一样忽快忽慢。我让他把回调函数贴出来一看——好家伙,路径函数里直接调了lv_anim_set_time()改时长。这种在动画执行…...

长期使用Taotoken聚合服务对开发者日常工作效率的积极影响观察

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 长期使用Taotoken聚合服务对开发者日常工作效率的积极影响观察 1. 引言&#xff1a;从分散管理到统一接入的转变 在模型应用开发过…...

告别玄学烧录:手把手教你排查i.MX6Q的Mfgtools‘Push Error’与设备识别问题

嵌入式工程师实战指南&#xff1a;i.MX6Q烧录故障的模块化诊断方法论 当Mfgtools的进度条突然卡住&#xff0c;红色错误提示框弹出"Push Error"时&#xff0c;许多工程师的第一反应是反复插拔USB线——这种条件反射式的操作往往掩盖了真正的系统性问题。i.MX6Q的烧录…...

从零到一:手把手部署openGauss极简版并完成基础运维

1. 环境准备&#xff1a;从零搭建openGauss的基石 第一次接触openGauss时&#xff0c;我被它"极简版"的宣传吸引&#xff0c;但真正动手部署才发现&#xff0c;前期环境准备才是决定成败的关键。就像盖房子需要打地基&#xff0c;数据库安装前的系统配置直接影响后续…...

RK3568开发实战:基于buildroot定制开机自启Qt应用,彻底解决全屏显示与任务栏冲突

1. RK3568开发板与buildroot固件基础 RK3568作为瑞芯微推出的高性能处理器&#xff0c;在工业控制和嵌入式领域应用广泛。很多开发者选择buildroot作为其轻量级Linux系统构建工具&#xff0c;因为它能快速生成包含Qt运行环境的定制化固件。我在实际项目中发现&#xff0c;直接使…...

保姆级教程:用Python和go-cqhttp给QQ群做个自动回复机器人(附完整代码)

从零构建智能QQ群机器人&#xff1a;Python与go-cqhttp实战指南 在社群运营中&#xff0c;自动回复机器人早已成为提升管理效率的利器。无论是处理高频咨询、新人引导&#xff0c;还是定时发布公告&#xff0c;一个配置得当的机器人能显著减轻管理员负担。本文将带你深入探索如…...

基于YOLOv8的苹果叶片病害检测系统

基于YOLOv8的苹果叶片病害检测系统 系统概述基于YOLOv8深度学习模型的苹果叶片病害检测系统&#xff0c;采用PyQt5构建桌面图形界面&#xff0c;支持多种YOLOv8模型版本选择。系统包含完整的苹果叶片病害数据集、预训练模型和可视化界面&#xff0c;为果农、农业技术人员和研究…...

如何高效下载抖音无水印视频的完整解决方案

如何高效下载抖音无水印视频的完整解决方案 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. 抖音批量下载工具&…...