当前位置: 首页 > 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 进…...

go中的接口返回设计思想

go中的接口返回设计思想 前言 在学习AI编码过程中&#xff0c;产生了类似以下结构的代码 &#xff1a; type MQClient interface {PublishMessage(queue string, message interface{}) error...... } ... type RabbitMQClient struct {conn *amqp.Connectionchannel *amqp.C…...

Ubuntu2404 下搭建 Zephyr 开发环境

1. 系统要求 操作系统&#xff1a;Ubuntu2404&#xff08;64位&#xff09;磁盘空间&#xff1a;至少 8GB 可用空间&#xff08;Zephyr 及其工具链较大&#xff09; 2. 安装必要工具 Tool Min. Version CMake 3.20.5 Python 3.10 Devicetree compiler 1.4.6 2.1 安装系…...

[c#]判定当前软件是否用管理员权限打开

有时一些软件的逻辑中需要使用管理员权限对某些文件进行修改时&#xff0c;那么该软件在执行或者打开的场合&#xff0c;就需要用使用管理员身份运行才能达到效果。那么在c#里&#xff0c;如何判定该软件是否是对管理员身份运的呢&#xff1f; 1.取得当前的windows用户。 2.取得…...

1130 - Host ‘xxx.x.xx.xxx‘is not allowed to connect to this MySQL server

以下为本次问题的解决办法&#xff1a; 1、暂停mysql容器&#xff1a; docker stop mysql 2、删除mysql容器&#xff1a;docker rm mysql 3、查看mysql容器是否被删除&#xff1a;docker ps -a #没有mysql容器就是删除成功 4、run mysql容器&#xff1a; docker run -d --…...

【vLLM 学习】Cpu Offload Lmcache

vLLM 是一款专为大语言模型推理加速而设计的框架&#xff0c;实现了 KV 缓存内存几乎零浪费&#xff0c;解决了内存管理瓶颈问题。 更多 vLLM 中文文档及教程可访问 →https://vllm.hyper.ai/ *在线运行 vLLM 入门教程&#xff1a;零基础分步指南 源码 examples/offline_inf…...

chili3d 笔记17 c++ 编译hlr 带隐藏线工程图

这个要注册不然emscripten编译不起来 --------------- 行不通 ---------------- 结构体 using LineSegment std::pair<gp_Pnt, gp_Pnt>;using LineSegmentList std::vector<LineSegment>; EMSCRIPTEN_BINDINGS(Shape_Projection) {value_object<LineSegment&g…...

【Java学习笔记】包装类

包装类&#xff08;Wrapper&#xff09; 1. 介绍 &#xff08;1&#xff09;针对八种基本数据类型相应的引用类型 --> 包装类 &#xff08;2&#xff09;有了类的特点&#xff0c;就可以调用类中的方法 2. 分类和继承关系 基本数据类型包装类父类booleanBooleanObjectc…...

spring:继承接口FactoryBean获取bean实例

spring框架提供接口FactoryBean获取bean实例。 实现步骤&#xff1a; 实现接口FactoryBean。 在xml文件中配置实现接口FactoryBean的类。 调用接口FactoryBean中方法getObject&#xff0c;获取bean实例。 实现接口类 package com.itheima.factory;import org.springframework…...

全国县域统计年鉴PDF-Excel电子版-2022年

全国县域统计年鉴PDF-Excel电子版-2022年.ziphttps://download.csdn.net/download/2401_84585615/89784662 https://download.csdn.net/download/2401_84585615/89784662 《中国县域统计年鉴》是一部全面反映中国县域社会经济发展状况的资料性年鉴。自2014年起&#xff0c;该年…...

数据治理在制造业的实践案例

一、数据治理在制造业的重要性 随着工业4.0的到来,制造业正经历着前所未有的变革。数据治理作为制造业数字化转型的关键组成部分,对提升企业竞争力、优化生产流程、提高产品质量和客户满意度等方面起着至关重要的作用。在制造业中,数据治理不仅涉及到数据的收集、存…...