kubernetes1.27.3版本单主机部署详细教程

news2024/11/22 16:23:34

本次kubernetes单主机部署是基于AnolisOS-7.9操作系统进行部署的,当然也适用于Centos7的操作系统,根据个人情况,选择适合自己的版本!
本次部署的kubernetes版本是1.27.3版本,系统架构是etcd,API Server,Controller Manager,Scheduler,Kubelet,Kube-proxy,Containerd,Docker。

IP操作系统内存(最低配置)CPU(最低配置)硬盘(最低配置)
192…101AnolisOS-7.94G2C60G

一:虚拟机安装及网络配置

1.下载安装的操作系统镜像
本文使用的是AnolisOS-7.9操作系统,系统镜像可以在阿里巴巴开源镜像站下载
下载地址:https://mirrors.aliyun.com/anolis/7.9/isos/GA/x86_64/AnolisOS-7.9-Minimal-x86_64-dvd.iso
image.png
2.本次虚拟机的安装是使用的VMware软件,使用其他软件也适用
(1)使用VMware创建虚拟机
(2)打开VMware,点击创建新的虚拟机
image.png
(3)选择自定义虚拟机
image.png(4)虚拟机硬件兼容性直接选择默认的就行
image.png
(5)新建虚拟机向导选择稍后安装操作系统
image.png
(6)客户机操作系统选择Linux,版本选择其他Linux 3.x内核 64位
image.png
(7)虚拟机名称和虚拟机存放位置根据个人情况自定义即可
image.png
(8)处理器数量指定为2C(最低配置2C,根据个人情况,越高越好)
image.png
(9)内存最低配置4G(根绝个人情况,越高越好)
image.png
(10)网络类型使用NAT的模式(网络类型也可以使用桥接的模式)
image.png
(11)IO控制器的类型使用默认的
image.png
(12)磁盘类型也选择默认的
image.png
(13)选择磁盘使用创建一个新的虚拟磁盘
image.png
(14)指定磁盘的容量为60G,将磁盘存储为单个文件
image.png
(15)创建好以后编辑虚拟机设置,选择要部署的镜像
image.png
image.png
(16)启动虚拟机开始安装操作系统 ,选择安装操作系统
image.png
(17)操作系统语言,选择英语(如果你想使用中文就选择中文)
image.png
(18)文件系统的分区采用的是自动分区
image.png
(19)配置网络
image.png
image.png
(20)开始安装
image.png
(21)配置root用户密码
image.png
(22)安装完系统以后重启
``image.png
(23)重启完以后使用终端工具登录验证一下
image.png

二:系统初始化

(1)更新系统
[root@localhost ~]# yum update
(2)安装wget命令
[root@localhost ~]# yum -y install wget
(3)关闭防火墙
systemctl stop firewalld && systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
(4)关闭交换分区
[root@localhost ~]# swapoff -a #临时关闭
将/etc/fstab配置文件里的swap交换分区的配置注释掉永久配置
image.png
(5)禁用SELinux
sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
cat /etc/selinux/config
(6)修改静态解析
cat >> /etc/hosts << EOF
192.168.255.101 k8s
EOF
(7)修改主机名 (修改的主机名要和你上面/etc/hosts里的一致)
hostnamectl set-hostname k8s
bash
(8)修改桥接
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
#免重启使配置生效
sysctl --system
(9)时间同步
yum install ntpdate -y && ntpdate time.windows.com

三:部署ETCD

1.安装自签证书需要的ssl程序
[root@k8s ~]# mkdir /data/ssl -p
[root@k8s ~]# cd /data/ssl
下载签名软件
[https://pkg.cfssl.org/R1.2/cfssl_linux-amd64](https://pkg.cfssl.org/R1.2/cfssl_linux-amd64)
[https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64](https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64)
[https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64](https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64)
mv cfssl-certinfo_linux-amd64 cfssl-certinfo
mv cfssljson_linux-amd64 cfssljson
mv cfssl_linux-amd64 cfssl
赋予签名软件可执行权限
chmod +x /data/ssl/*
mv cfssl cfssl-certinfo cfssljson /usr/local/bin/
验证签名软件是否可用
[root@k8s ssl]# cfssl version
Version: 1.2.0
Revision: dev
Runtime: go1.6
2.生成etcd证书
生成字根签名证书
[root@k8s ssl]# cfssl print-defaults config >ca-config.json
[root@k8s ssl]# cfssl print-defaults csr >ca-csr.json
[root@k8s ssl]# cfssl gencert -initca ca-csr.json | cfssljson -bare ca -
image.png
更新证书配置文件
ca-config.json
声明文件
ca-csr.json
更新证书
cfssl gencert -initca ca-csr.json | cfssljson -bare ca -
image.png
创建etcd的证书签名
etcd-server-csr.json
签发etcd服务端证书
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=etcd etcd-server-csr.json | cfssljson -bare etcd-server
创建etcd客户端服务签名
etcd-client-csr.json
生成自签证书
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=etcd etcd-client-csr.json | cfssljson -bare etcd-client
image.png
3.配置etcd服务并启动
下载etcd服务
cd /opt
wget [https://github.com/etcd-io/etcd/releases/download/v3.5.0/etcd-v3.5.0-linux-amd64.tar.gz](https://github.com/etcd-io/etcd/releases/download/v3.5.0/etcd-v3.5.0-linux-amd64.tar.gz)
解压,复制主程序到/usr/local/bin下
cp -p etcd etcdctl /usr/local/bin/
mkdir -p /data/k8s/etcd/bin/
cp -p etcd etcdctl /data/k8s/etcd/bin/
创建etcd目录,数据存放路径和配置文件存放路径
mkdir -p /var/lib/etcd/default.etcd && mkdir -p /data/etcd/config/
配置etcd服务文件
vi /usr/lib/systemd/system/etcd.service (这里的文件名是etcd.service,上传txt文件是为了方便复制,记得文件名不要搞错)
etcd.service.txt
创建etcd的配置文件,注意地址改成自己的本机的地址
cat /data/etcd/config/etcd.conf
etcd.conf.txt
image.png
4.启动etcd服务
systemctl enable etcd
systemctl daemon-reload && systemctl start etcd
5.验证etcd是否启动
systemctl status etcd
image.png
验证etcd的可用性
etcdctl --cacert=/data/ssl/ca.pem \
--cert=/data/ssl/etcd-server.pem \
--key=/data/ssl/etcd-server-key.pem \
--endpoints="https://192.168.255.101:2379" endpoint status -w table
image.png
6.重启节点,验证etcd的健康度
reboot
服务器起来以后验证一下etcd服务是否可用,验证返回正常则代表etcd安装成功
etcdctl --cacert=/data/ssl/ca.pem \
--cert=/data/ssl/etcd-server.pem \
--key=/data/ssl/etcd-server-key.pem \
--endpoints="https://192.168.255.101:2379" endpoint health
image.png

四,部署docker和Containerd服务

1.安装Go语言
yum install -y epel-release
yum install -y golang
2.安装docker
yum install -y yum-utils
yum-config-manager --add-repo [https://download.docker.com/linux/centos/docker-ce.repo](https://download.docker.com/linux/centos/docker-ce.repo)
yum install -y docker-ce docker-ce-cli containerd.io
3,配置docker镜像地址
cat > /etc/docker/daemon.json << EOF
{
"registry-mirrors": ["[https://registry.docker-cn.com",](https://registry.docker-cn.com",) "https://docker.mirrors.ustc.edu.cn"],
"exec-opts": ["native.cgroupdriver=systemd"],
}
EOF
4,启动docker和Containerd服务
systemctl daemon-reload
systemctl enable docker && systemctl enable containerd
systemctl start docker && systemctl start containerd
查看服务的状态
systemctl status docker containerd
image.png

五,安装kubernetes相关组件服务

1.配置kubeadman安装的yum源
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=[https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64](https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64)
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=[https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg](https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg) ``[https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg](https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg)
EOF
2.调整containerd 的默认配置
containerd config default > /etc/containerd/config.toml
将默认的镜像下载地址改成阿里云的镜像源
[root@k8s ~]# grep sandbox_image /etc/containerd/config.toml
sandbox_image = "registry.k8s.io/pause:3.6"
[root@k8s ~]# grep sandbox_image /etc/containerd/config.toml
sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.9"
image.png
3.配置containerd cgroup 驱动程序systemd
sed -i 's#SystemdCgroup = false#SystemdCgroup = true#g' /etc/containerd/config.toml
image.png
4.配置crictl
cat <<EOF> /etc/crictl.yaml
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
timeout: 10
debug: false
EOF
5.重新加载Docker,重新启动containerd
systemctl reload docker && systemctl daemon-reload && systemctl restart docker && systemctl restart containerd
6.安装kubeadm,kubectl,kubelrt
yum install -y kubeadm-1.27.3 kubectl-1.27.3 kubelet-1.27.3
7.启动kubelet服务
systemctl enable kubelet
8.验证containerd的状态
crictl version
image.png

六:部署kubernetes服务

1.创建证书,配置文件存放文件夹
mkdir /usr/local/kubernetes/manifests -p && cd /usr/local/kubernetes/manifests/ && mkdir -p /data/k8s/config/ && mkdir -p /etc/kubernetes/pki/
2.生成hash值,并配置token配置文件
[root@k8s manifests]# head -c 16 /dev/urandom | od -An -t x | tr -d ' '
64e27ac83653a86c192ef484e70308b7
[root@k8s manifests]# cat >/data/k8s/config/token.csv << EOF
> 64e27ac83653a86c192ef484e70308b7,kubelet-bootstrap,10001,"system:node-bootstrapper"
> EOF
3.创建kubeenetes集群初始化配置文件
在/usr/local/kubernetes/manifests目录下配置kubeadm-config.yaml文件
image.png
kubeadm-config.yaml
certSANs参数改成你的主机地址和主机名,etcd地址需要改成咱们提前部署好的etcd地址,controlPlaneEndpoint参数地址改成本机的地址,如果是高可用的环境的话需要改成VIP的地址和端口
image.png
4.开始执行
kubeadm init --config kubeadm-config.yaml
执行结束后出现下面这些说明部署成功了
image.png
5.咱们依据出现的配置完成环境变量的配置
[root@k8s manifests]# mkdir -p $HOME/.kube
[root@k8s manifests]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@k8s manifests]# sudo chown $(id -u):$(id -g) $HOME/.kube/config
[root@k8s manifests]# export KUBECONFIG=/etc/kubernetes/admin.conf
6.验证集群的状态
image.png
7.查看当前nodes的状态是NotReady的状态,这是还没部署网络组件的原因
image.png
8.部署网络组件flannel
下载flannel
wget [https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml](https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml)
kube-flannel.yml
安装flannel
kubectl apply -f kube-flannel.yml
image.png
flannel组件服务起来以后,整个kubernetes环境就可用了
image.png
9.创建一个nginx服务的Pod验证环境是否可用
创建nginx容器以后,容器的状态是Pending的状态,不是整正常的Running的状态
image.png
是因为咱们只部署了一个master节点 ,K8S的master节点默认是不运行业务Pod的,删掉master的污点
kubectl taint node k8s node-role.kubernetes.io/control-plane:NoSchedule-
Pod启动成功,能正常访问
image.png

七:升级kubernets集群

1.升级kubeadm
查看当前kubeadm的版本
kubeadm version
安装要升级版本的kubeadm
yum install -y kubeadm-1.28.2-0 --disableexcludes=kubernetes
验证下载操作正常,并且 kubeadm 版本正确:
kubeadm version
image.png
验证升级计划,此命令检查你的集群是否可被升级,并取回你要升级的目标版本。 命令也会显示一个包含组件配置版本状态的表格。
kubeadm upgrade plan
image.png
选择要升级到的目标版本,运行合适的命令。例如:
kubeadm upgrade apply v1.28.2
image.png
2.升级 kubelet 和 kubectl
yum install -y kubelet-'1.28.2-*' kubectl-'1.28.2-*' --disableexcludes=kubernetes
重启 kubelet:
systemctl daemon-reload && systemctl restart kubelet
验证
image.png

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Jenkins】Pipeline流水线语法解析全集 -- 声明式流水线

&#x1f468;‍&#x1f393;博主简介 &#x1f3c5;CSDN博客专家   &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01…

嵌入式学习<2>:EXTI、ADC、NVIC和AFIO

嵌入式学习_part2 本部分笔记用于学习记录&#xff0c;笔记源头 >>b站江科大_STM32入门教程_EXTI EXTI、ADC、NVIC和AFIO 开发环境&#xff1a;keil MDK、STM32F103C8T6 1 &#xff09;EXTI STM32F10xxx参考手册&#xff08;中文&#xff09;-> 中断与事件 ->…

死锁调试技巧:工作线程和用户界面线程

有人碰到了一个死锁问题&#xff0c;找到我们想请我们看看&#xff0c;这个是关于应用程序用户界面相关的死锁问题。 我也不清楚他为什么会找上我们&#xff0c;可能是因为我们经常会和窗口管理器打交道吧。 下面&#xff0c;我们来看看死锁的两个线程。 >> 请移步至 …

【SpringSecurity源码】过滤器链加载流程

theme: smartblue highlight: a11y-dark 一、前言及准备 1.1 SpringSecurity过滤器链简单介绍 在Spring Security中&#xff0c;过滤器链&#xff08;Filter Chain&#xff09;是由多个过滤器&#xff08;Filter&#xff09;组成的&#xff0c;这些过滤器按照一定的顺序对进…

LeetCode算法题:49. 字母异位词分组(Java)

给你一个字符串数组&#xff0c;请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 示例 1: 输入: strs ["eat", "tea", "tan", "ate", "nat", …

试试这四个AI论文工具和降重技术,低成本高回报

在科研领域&#xff0c;AI写作工具如同新一代的科研利器&#xff0c;它们能够极大提高文献查阅、思路整理和表达优化的效率&#xff0c;本质上促进了科研工作的进步。AI写作工具不仅快速获取并整理海量信息&#xff0c;还帮助我们精确提炼中心思想&#xff0c;显著提升论文写作…

Windows系统安装MongoDB数据库

MongoDB是一个基于分布式文件存储的NoSQL数据库&#xff0c;由C语言编写的。MongoDB的数据存储基本单元是文档&#xff0c;它是由多个键值对有序组合的数据单元&#xff0c;类似于关系数据库中的数据记录。适合存储JSON形式的数据&#xff0c;数据格式自由&#xff0c;不固定。…

自制无感无刷电机驱动板

自制无感无刷电机驱动板 分别测试了基于C251的STC32G单片机、Arduino AVR的ATmega328PB、以及ARM的ST32F103单片机。 &#x1f9f2;测试转动效果 ✒目前市面上开源的有关无刷电机的项目数不胜数&#xff0c;其控制原理都大同小异&#xff0c;在没有领透其技术要领情况下&#x…

怎么申请一年期免费的https证书

随着互联网的推广和普及&#xff0c;如今HTTPS证书的普及度还是比较高的了&#xff0c;大家对于https证书的需求度也在日益提升。针对于一些个人用户或是企业而言&#xff0c;实现网站的https访问已经成为了一种标配。从去年年底开始&#xff0c;各大SSL证书厂商陆续下架一年期…

用Python和GUI实现Socket多线程通信方案

下面是一个使用 Python 和 Tkinter GUI 库实现 Socket 多线程通信的简单示例。在这个示例中&#xff0c;我是创建了一个简单的聊天应用&#xff0c;其中服务器和客户端可以通过 Socket 进行通信。 1、问题背景 这个问题与在 Python 应用中使用 pyGTK、线程和套接字相关。开发者…

GD32驱动LCD12864

目录 1、引言 1.1、LCD12864基本概念和作用。 1.2、硬件引脚 2、GD32微控制器简介 3、LCD12864显示屏简介 3.1、模块引脚说明 3.2、模块连接方式 4、驱动原理 4.1、指令集 4.2、显示坐标关系 5、软件开发 6、硬件连接 7、效果演示 8、附录 1、引言 1.1、LCD12…

地下车库导航地图怎么做?停车场地图绘制软件哪个好?

上海懒图科技以先进技术和丰富的行业服务经验为用户提供停车场景下的全流程服务平台&#xff0c;用户基于平台可自主快速绘制酷炫的停车场地图&#xff0c;通过提供完善的停车场应用功能集和扩展API服务包&#xff0c;可以方便地实现电子地图服务于您的各类停车场应用中&#x…

【SRC实战】小游戏漏洞修改分数打榜

挖个洞先 https://mp.weixin.qq.com/s/Um0HU2srvZ0UlZRAsbSVug “ 以下漏洞均为实验靶场&#xff0c;如有雷同&#xff0c;纯属巧合 ” 01 — 漏洞证明 “ 如何刷分提高排名&#xff1f;” 1、进入小游戏&#xff0c;类似于跳一跳 2、开始时每次加1分 3、随着游戏进行…

中国GDP空间分布数据集

中国GDP空间分布公里网格数据集是在全国分县GDP统计数据的基础上&#xff0c;考虑人类活动密切相关的土地利用类型、夜间灯光亮度、居民点密度数据与GDP的空间互动规律&#xff0c;通过空间插值生成的空间格网数据。数据包括1995、2000、2005、2010、2015和2019年6期。该数据集…

Vue3实战笔记(20)—封装头部导航组件

文章目录 前言一、封装头部导航栏二、使用步骤总结 前言 Vue 3 封装头部导航栏有助于提高代码复用性、统一风格、降低维护成本、提高可配置性和模块化程度&#xff0c;同时还可以实现动态渲染等功能&#xff0c;有利于项目开发和维护。 一、封装头部导航栏 封装头部导航栏&am…

11个免费的 android数据恢复应用程序功能分析

在手机上丢失数据是一个很大的错误。但是&#xff0c;在这种情况下&#xff0c;除了惊慌失措之外&#xff0c;最好开始使用android数据恢复应用程序搜索以查找将其取回的方法。您可以检查手机的备份存储以在Android上进行数据恢复&#xff0c;但是如果数据仍然无处可寻&#xf…

spring cloud alibaba、spring cloud和springboot三者的版本兼容

官方版本说明地址: 版本说明 alibaba/spring-cloud-alibaba Wiki GitHub 组件版本关系 每个 Spring Cloud Alibaba 版本及其自身所适配的各组件对应版本如下表所示(注意,Spring Cloud Dubbo 从 2021.0.1.0 起已被移除出主干,不再随主干演进): Spring Cloud Alibaba Ve…

如何利用AI生成答辩PPT?笔灵AI答辩PPT,智能识别关键点

很多快要毕业的同学在做答辩PPT的时候总是感觉毫无思路&#xff0c;一窍不通。但这并不是你们的错&#xff0c;对于平时没接触过相关方面&#xff0c;第一次搞答辩PPT的人来说&#xff0c;这是很正常的一件事。一个好的答辩PPT可以根据以下分为以下几部分来写。 1.研究的背景和…

业绩超预期外,海尔智家ESG实践再获认可

求增长&#xff0c;已成各行业面对的共同命题。 在家电赛道上&#xff0c;海尔智家的业绩表现不俗。2024一季度&#xff0c;海尔智家延续了年报稳健增长的趋势&#xff0c;继续在高基数下实现高增长&#xff0c;其利润增幅更是高达20.2&#xff05;&#xff0c;超预期。而今年…

图像质量评价指标:了解图像质量的度量方式

图像质量评价指标&#xff1a;了解图像质量的度量方式 在图像处理和计算机视觉领域&#xff0c;评价图像质量的准确性对于许多应用至关重要。通过合适的评价指标&#xff0c;我们可以量化图像的质量&#xff0c;从而更好地了解图像处理算法的效果和改进空间。本文将介绍图像质…