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

Zustand 状态管理库:极简而强大的解决方案

Zustand 是一个轻量级、快速和可扩展的状态管理库&#xff0c;特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

Admin.Net中的消息通信SignalR解释

定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指&#xff1a;像函数调用/返回一样轻量地完成任务切换。 举例说明&#xff1a; 当你在程序中写一个函数调用&#xff1a; funcA() 然后 funcA 执行完后返回&…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序

一、开发准备 ​​环境搭建​​&#xff1a; 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 ​​项目创建​​&#xff1a; File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

django filter 统计数量 按属性去重

在Django中&#xff0c;如果你想要根据某个属性对查询集进行去重并统计数量&#xff0c;你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求&#xff1a; 方法1&#xff1a;使用annotate()和Count 假设你有一个模型Item&#xff0c;并且你想…...

Java面试专项一-准备篇

一、企业简历筛选规则 一般企业的简历筛选流程&#xff1a;首先由HR先筛选一部分简历后&#xff0c;在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如&#xff1a;Boss直聘&#xff08;招聘方平台&#xff09; 直接按照条件进行筛选 例如&#xff1a…...

大学生职业发展与就业创业指导教学评价

这里是引用 作为软工2203/2204班的学生&#xff0c;我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要&#xff0c;而您认真负责的教学态度&#xff0c;让课程的每一部分都充满了实用价值。 尤其让我…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)

船舶制造装配管理现状&#xff1a;装配工作依赖人工经验&#xff0c;装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书&#xff0c;但在实际执行中&#xff0c;工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...

短视频矩阵系统文案创作功能开发实践,定制化开发

在短视频行业迅猛发展的当下&#xff0c;企业和个人创作者为了扩大影响力、提升传播效果&#xff0c;纷纷采用短视频矩阵运营策略&#xff0c;同时管理多个平台、多个账号的内容发布。然而&#xff0c;频繁的文案创作需求让运营者疲于应对&#xff0c;如何高效产出高质量文案成…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...