kubeadm方式部署k8s最新版本V1.26.2

2023-11-17

Kubernetes核心概念

Master主要负责资源调度,控制副本,和提供统一访问集群的入口。--核心节点也是管理节点

Node是Kubernetes集群架构中运行Pod的服务节点。Node是Kubernetes集群操作的单元,用来承载被分配Pod的运行,是Pod运行的宿主机,由Master管理,并汇报容器状态给Master,同时根据Master要求管理容器生命周期。

Node节点的IP地址,是Kubernetes集群中每个节点的物理网卡的IP地址,是真是存在的物理网络,所有属于这个网络的服务器之间都能通过这个网络直接通信;

Pod直译是豆荚,可以把容器想像成豆荚里的豆子,把一个或多个关系紧密的豆子包在一起就是豆荚(一个Pod)。在k8s中我们不会直接操作容器,而是把容器包装成Pod再进行管理,运行于Node节点上, 若干相关容器的组合。Pod内包含的容器运行在同一宿主机上,使用相同的网络命名空间、IP地址和端口,能够通过localhost进行通信。Pod是k8s进行创建、调度和管理的最小单位,它提供了比容器更高层次的抽象,使得部署和管理更加灵活。一个Pod可以包含一个容器或者多个相关容器。Pod 就是 k8s 世界里的"应用";而一个应用,可以由多个容器组成。

pause容器每个Pod中都有一个pause容器,pause容器做为Pod的网络接入点,Pod中其他的容器会使用容器映射模式启动并接入到这个pause容器。

Pod Volume,数据卷,挂载宿主机文件、目录或者外部存储到Pod中,为应用服务提供存储,也可以解决Pod中容器之间共享数据。

服务器准备:

192.168.197.136  (k8s-master)

192.168.197.137 (k8s-node1)

192.168.197.138 (k8s-node2)

主机名修改

hostnamectl set-hostname k8s-master

hostnamectl set-hostname k8s-node1

hostnamectl set-hostname k8s-node2

关闭防火墙和selinux  

systemctl stop firewalld && systemctl disable firewalld

setenforce 0

vim /etc/selinux/config

配置一下本地解析

vim  /etc/hosts

安装docker应用

每个节点都需要下载

yum install -y yum-utils device-mapper-persistent-data lvm2 git

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

yum install docker-ce -y

如果使用的挂载磁盘则需要更改docker的数据目录

如果是启动过的docker则需要停止docker服务 然后把  /var/lib/docker/目录下的数据移动到新的目录   mv  /var/lib/docker/  /data/docker/

修改docker默认数据存储目录配置,在/etc/docker/daemon.json文件添加 以下内容,若是没有/etc/docker/daemon.json文件,则新建该文件

vim /etc/docker/daemon.json

{

 "data-root": "/data/docker"

}

systemctl start docker   启动

systemctl enable docker  设置开机自启

关闭swap分区

Kubernetes 1.8开始要求关闭系统的Swap,如果不关闭,默认配置下kubelet将无法启动。方法一,通过kubelet的启动参数–fail-swap-on=false更改这个限制。方法二,关闭系统的Swap。

每个节点都需要关闭

swapoff -a

vim /etc/fstab  注释掉SWAP的自动挂载

使用free -m确认swap已经关闭。

拉取docker镜像

初始化的时候,它会自动拉取镜像但是自动拉取用的是k8s官网的源地址容易失败所以手动拉取aliyun的镜像注意拉取的docker镜像的版本必须要和kubelet、kubectl的版本保持一致。在下面初始化时直接指定阿里云的镜像

vim dockerpull.sh

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.26.2

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.26.2

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.26.2

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.26.2

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.9.3

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.5.6-0

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.9

bash dockerpull.sh  执行脚本拉取镜像

docker images   看下镜像是否都拉取成功

cri-dockerd安装

注意部署最新版本1.26.2  默认不在是使用docker容器所以需要下载一个插件

所有节点都需要下载

wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.1/cri-dockerd-0.3.1-3.el7.x86_64.rpm

rpm -ivh  cri-dockerd-0.3.1-3.el7.x86_64.rpm

修改/usr/lib/systemd/system/cri-docker.service文件中ExecStart配置kubelet使用pause镜像

vim /usr/lib/systemd/system/cri-docker.service

ExecStart=/usr/bin/cri-dockerd --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.9

systemctl daemon-reload

systemctl enable --now cri-docker

加载ipvs相关内核模块

vim mod.sh

#!/bin/bash

modprobe ip_vs

modprobe ip_vs_rr

modprobe ip_vs_wrr

modprobe ip_vs_sh

modprobe nf_conntrack_ipv4

modprobe br_netfilter

chmod +x mod.sh

bash   mod.sh

scp mod.sh  k8s-node1:/root/   发送后记得执行一下

scp mod.sh  k8s-node2:/root/ 发送后记得执行一下

vim /etc/rc.local   如果重新开机,需要重新加载(所以写在 /etc/rc.local 中开机自动加载)

chmod +x /etc/rc.local

配置转发相关参数,否则可能会出错

cat <<EOF >  /etc/sysctl.d/k8s.conf

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

vm.swappiness=0

EOF

sysctl --system   使配置生效

lsmod | grep ip_vs 查看是否加载成功

安装kubeadm和kubelet:

所有节点都需要安装

配置阿里云的yum源

cat <<EOF > /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

EOF

 scp /etc/yum.repos.d/kubernetes.repo   k8s-node1:/etc/yum.repos.d/kubernetes.repo

 scp /etc/yum.repos.d/kubernetes.repo   k8s-node2:/etc/yum.repos.d/kubernetes.repo

安装

yum makecache fast -y

yum install -y kubelet kubeadm kubectl ipvsadm  #注意,这样默认是下载最新版本

如果想下载旧版本,后面要跟上指定的版本号

yum install -y kubelet-1.22.2-0.x86_64 kubeadm-1.22.2-0.x86_64 kubectl-1.22.2-0.x86_64 ipvsadm  

启动kubelet

systemctl daemon-reload

systemctl enable kubelet && systemctl restart kubelet

systemctl status kubelet查看一下状态你会发现报错误信息;(每个节点都会报错),不用管master节点初始化之后就好了。

配置master节点初始化

kubeadm init --help可以查看命令的具体参数用法

在master节点执行初始化(node节点不用执行)

参数详情:

apiserver-advertise-address  指定apiserver的IP,即master节点的IP

image-repository  设置镜像仓库为国内的阿里云镜像仓库

kubernetes-version  设置k8s的版本,跟步骤三的kubeadm版本一致

service-cidr  这是设置node节点的网络的,暂时这样设置

pod-network-cidr  这是设置node节点的网络的,暂时这样设置

cri-socket  设置cri使用cri-dockerd

kubeadm init --apiserver-advertise-address=192.168.197.136 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.26.2 --service-cidr=10.168.0.0/12 --pod-network-cidr=10.244.0.0/16 --cri-socket unix:///var/run/cri-dockerd.sock  --ignore-preflight-errors=all

执行完初始化的命令 查看一下回显是否成功

echo $?

初始化完成后根据提示的命令操作即可

 mkdir -p $HOME/.kube

 sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

 sudo chown $(id -u):$(id -g) $HOME/.kube/config

如果使用的root用户可以操作这条命令

export KUBECONFIG=/etc/kubernetes/admin.conf

kubectl get nodes   操作完以上步骤查看一下node节点已经可以看到master了

配置flannel网络插件

完成master节点的时候k8s已经叫我们去配置pod网络了。在k8s系统上Pod网络的实现需要依赖于第三方插件进行种类有很多我们这里使用的flannel。

cd ~ && mkdir flannel && cd flannel

wget https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml

vim kube-flannel.yml   查看一下镜像版本

拉取要用到的镜像所有节点都要拉取

docker pull docker.io/flannel/flannel:v0.21.2

docker pull docker.io/flannel/flannel-cni-plugin:v1.1.2

kubectl apply -f kube-flannel.yml     运行

查看一下master节点的状态

从NoReady  变成了 Ready 那么我们的flannel就部署好了

Node节点加入集群操作命令

Node1 节点操作

kubeadm join 192.168.197.136:6443 --token 8isrry.zd97vxqtsg7vw2dx \

        --discovery-token-ca-cert-hash sha256:e2efbe684211b437d40c03a2e512f31982716caa38b51c7f88f1516c166de76e  --cri-socket unix:///var/run/cri-dockerd.sock

加入node1节点时报错,发现是忘记修改主机名导致的(开始修改过主机名没有这个报错)

所有机器修改一下主机名

 hostnamectl set-hostname k8s-master

 hostnamectl set-hostname k8s-node1

 hostnamectl set-hostname k8s-node2

然后node1节点要删除刚刚生成的证书重新执行加入集群的命名

rm -rf  /etc/kubernetes/pki/ca.crt

Node所有节点操作

kubeadm join 192.168.197.136:6443 --token 8isrry.zd97vxqtsg7vw2dx \

        --discovery-token-ca-cert-hash sha256:e2efbe684211b437d40c03a2e512f31982716caa38b51c7f88f1516c166de76e  --cri-socket unix:///var/run/cri-dockerd.sock

然后来到master节点查看一下node信息

kubectl get nodes

kubectl get pods --namespace kube-flannel    看下flannel运行状态

Node两个节点也已经加入成功

删除node节点操作

kubectl delete nodes node节点名称

添加已删除node节点操作

1.停止被删除node节点的kubectl systemctl stop kubelet

2.删除相关文件  rm -rf /etc/kubernetes/*

3.添加节点 注意token未失效(token有效期24小时)才能这样操作 kubeadm join 192.168.197.136:6443 --token 8isrry.zd97vxqtsg7vw2dx         --discovery-token-ca-cert-hash sha256:e2efbe684211b437d40c03a2e512f31982716caa38b51c7f88f1516c166de76e  --cri-socket unix:///var/run/cri-dockerd.sock   

Token过期后有新的节点加入操作

kubeadm token create --print-join-command Token重新生成的命令

重新生成的token加上 --cri-socket unix:///var/run/cri-dockerd.sock  参数在新节点执行即可

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

kubeadm方式部署k8s最新版本V1.26.2 的相关文章

随机推荐

  • vw移动端布局,vue项目初始化构建

    大漠老师的vue项目vw布局 现在已经收费 1 构建项目 vue init webpack demo 之前的准备工作 像下载node啥的就不多逼逼了 2 引入 vw 布局所需要的包 npm i postcss aspect ratio mi
  • Ubuntu 16.04 安装后修改屏幕分辨率(xrandr: Failed to get size of gamma for output default)

    ubuntu 16 04 安装后分辨率只有一个选项 1024x768 使用 xrandr 命令出现错误 xrandr Failed to get size of gamma for output default 使用 cvt 命令也无法设置
  • FPGA面试真题解析(3)

    9 寄存器的Tsu 建立时间 是如何定义的 硬件逻辑实习岗 A 在时钟沿到来之后数据保持稳定的时间 B 在时钟沿带来前后数据都需要保持稳定的时间 C 在整个时钟周期数据保持稳定的时间 D 在时钟沿到来之前数据保持稳定的时间 解析 考察数字电
  • 知识蒸馏概念

    迁移学习侧重不同领域 知识蒸馏侧重不同模型 知识蒸馏模型就是把一个大的教师模型蒸馏成一个小的学生模型 教师模型会的多而且杂 体型大的网络 而学生网络小而轻量化 知识蒸馏就是模型压缩的一个手段 教师模型 学生模型 预训练的大模型 通过海量数据
  • 四象限运行模式_快速检测动车组网压中断的方法,保障高铁运行安全

    弓网离线导致的网压中断 会对动车组变流系统的长期安全可靠运行产生不利影响和潜在安全隐患 为此 北京交通大学电气工程学院 北京市轨道交通电气工程技术研究中心的研究人员张钢 郭尝君 郝峰杰 刘志刚 在2019年 电工技术学报 增刊2上撰文 提出
  • redis学习笔记

    2020最新 Redis超详细版教程通俗易懂 视频地址 https www bilibili com video BV1FZ4y1u7ny p 1 1 1Redis介绍 1由于用户量增大 请求数量也随之增大 数据压力过大 2多台服务器之间
  • Unlimited “使用GPT-4 ”!它来了!

    备注本文末尾附录注册登录过程 平台介绍 聊天机器Chat fore人front ai是一为款基于人主工智能的题聊天的机器人主平台 旨在帮菜助企 业提可以高客户服务质是量和一效率 该平款台利用自然语精言处理技术和机器致学习的算法 能够自牛动排
  • 人生本过客,何必太执着

    仓央嘉措曾在诗中写道 世间事 除了生死 哪一桩不是闲事 的确 人这一生 其实就是一场单程旅行 虽然过程未知 风景不同 但已知的是 我们都有同一个结局 很多时候 我们却放不下内心执念 执着过去的人和事 担忧当下和未来 为种种遗憾伤怀 反而忘了
  • SpringCloud-Config、Git环境搭建、服务端连接Git配置、客户端实现远程访问、远程配置实战、bootstrap.yml

    SpringCloud config分布式配置中心 前言 SpringCloud config分布式配置中心 为什么需要SpringCloud config SpringCloud config能做什么 新建Git仓库以及配置 提交修改文件
  • DC-DC电路中,PCB Layout 布局及注意事项

    在DCDC电源电路中 PCB的布局对电路功能的实现和良好的各项指标来说都十分重要 本文以buck电路为例 简单分析一下如何进行合理PCB layout布局以及设计中的注意事项 如有问题 欢迎指正 首先 以最简单的BUCK电路拓扑为例 下图
  • androidx.lifecycle.ViewModel

    相关链接 深入了解架构组件之ViewModel
  • 抓包工具Charles(二)-移动端APP抓包(设置手机代理、安装证书)

    安装好Charles之后 还只能捕获电脑的接口请求 想要抓取移动设备的APP还需要设置代理 安装证书 文章目录 一 抓包原理 二 手机设置网络代理 1 查看电脑的IP地址 local IP address 2 设置手机网络代理 1 iOS设
  • 数据结构与算法----详解二叉树的遍历(迭代、递归)

    文章目录 实现二叉树的类 前序遍历 中序遍历 后序遍历 层次遍历 总结 作者简介 大家好我是小鱼干儿 是一个热爱编程 热爱算法的大三学生 蓝桥杯国赛二等奖获得者 个人主页 https blog csdn net qq 52007481 个人
  • 老毛桃u盘装系统linux,老毛桃U盘装系统教程详细步骤

    电脑用久了 就会觉得用起来很慢 还很卡 有时还有蓝屏的现象 为了解决这一问题 通常我们都会选择重装系统 如果你还是用光盘来装系统 那么你就OUT了 今天小编讲讲U盘怎么用 老毛桃 来给电脑重装系统 老毛桃是一个多系统模式的PE操作系统 一般
  • 机器学习必学数学基础系列之概率与统计

    课程目标机器学习必学数学基础系列之大数据矩阵基础适应人群大数据 人工智能开发人员课程简介本课程囊括了机器学习理论中所需要概率部分包括概率公理及推论 条件概率 贝叶斯公式 随机变量及其概率函数 CDF pdf 常用概率分布及其均值 方差 统计
  • 虚拟机网络配置、ssh免密配置、jdk和hadoop安装、Hadoop集群配置、格式化文件系统、关闭和启动集群、UI查看集群状态

    一 虚拟机网络配置 二 SSH免密登录公能配置 二 安装jdk 三 安装Hadoop 四 Hadoop集群配置 五 格式化文件系统 六 关闭和启动Hadoop集群 七 通过UI界面查看Hadoop运行状态 1 虚拟机网络配置 mkdir p
  • Python中一些语句的简洁写法

    Python拾珍 Python 提供了不少并不是完全必需的功能 使用这些功能可以写出更简洁 更可读或者更高效的代码 甚至有时候三者兼得 当然 不使用这些功能 我们依然可以写出好代码 阅读一些开源项目 github上很常见 经常可以看到这种简
  • 博士的年薪一般是多少万?

    作者 Dr YaIRhttps www zhihu com question 546293852 answer 3035449200 中科院北京某所的土博士毕业 拿到了中科院优博 留在中科院做助理研究员 工作2年了 本人不在院士组 不在杰青
  • MD5学习总结

    1 MD5简介 MD5 即消息摘要算法第五版 是一种被广泛使用的密码散列函数 散列算法的基本原理是 进行数据 如一段文字 运算 将原始数据变为另一段固定长度的值 MD5 可以产生出一个 128位 16字节 的散列值 hash value 用
  • kubeadm方式部署k8s最新版本V1.26.2

    Kubernetes核心概念 Master主要负责资源调度 控制副本 和提供统一访问集群的入口 核心节点也是管理节点 Node是Kubernetes集群架构中运行Pod的服务节点 Node是Kubernetes集群操作的单元 用来承载被分配