保姆级教程教你如何快速部署kubernetes

news2024/10/10 1:21:43

主机配置

主机名IP角色
ooovooo.org172.25.254.100Harbor仓库
k8s-master.org172.25.254.200Master主机
k8s-node1.org172.25.254.10Node主机
k8s-node2.org172.25.254.20Node主机

Master主机、Node主机、Harbor仓库

部署Docker-Ce

vim /etc/yum.repos.d/docker.repo
[docker]
name=docker
baseurl=https://mirrors.aliyun.com/docker-ce/linux/rhel/9/x86_64/stable/
gpgcheck=0

dnf install docker-ce -y

添加主机解析

vim /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
172.25.254.100	ooovooo.org
172.25.254.10	k8s-node1.org
172.25.254.20	k8s-node2.org
172.25.254.200	k8s-master.org

禁用Swap、SeLinux、FireWalld

# 注释参数
vim /etc/fstab
# /dev/mapper/rhel-swap   none    swap    defaults    0 0

# 锁定 swap 功能
systemctl mask swap.target
swapoff -a

# 无内容显示,即配置成功
swapon -s	
# 建议重启主机,并查看是否开机启动 swap 功能

# 关闭防火墙
systemctl stop firewalld
# 锁死防火墙
systemctl mask firewalld

# 关闭SeLinux
grubby --update-kernel ALL --args selinux=0
# 关闭SELinux,修改成disabled
vi /etc/selinux/config
22 SELINUX=disabled

Harbor仓库

下载地址:https://github.com/goharbor/harbor/releases

生成认证 和 证书

mkdir /data/docker/certs/ -p
openssl req -newkey  rsa:4096 \
-addext "subjectAltName = DNS:ooovooo.org" \
# Harbor仓库域名,且/etc/hosts有解析
-x509 -days 365 -out /data/docker/certs/ovo.org.crt \
-nodes -sha256 -keyout /data/docker/certs/ovo.org.key

...
# 其他随意填写,此项要注意
Common Name (eg, your name or your server's hostname) []:ooovooo.org
# 与"subjectAltName = DNS:ooovooo.org" 域名保持一致
...

# 进行认证
mkdir /etc/docker/certs.d/ooovooo.org/ -p
cp /data/docker/certs/ovo.org.crt /etc/docker/certs.d/ooovooo.org/ca.crt
# ca.crt 固定名字

# 若没有认证成功,可能显示报错
Error response from daemon: Get "https://ooovooo.org/v2/": tls: failed to verify certificate: x509: certificate signed by unknown authority

安装Harbor

tar zxf harbor-offline-installer-v2.5.4.tgz
# 修改 Harbor.yml 文件

cd /root/harbor/
cp harbor.yml.tmpl harbor.yml

vim harbor.yml
5 hostname: ooovooo.org
17 certificate: /data/docker/certs/ovo.org.crt
18 private_key: /data/docker/certs/ovo.org.key
34 harbor_admin_password: aaa
# Username:admin
# Password:aaa

./install.sh --with-chartmuseum
# kubernetes的helm工具

登录Harbor仓库

Master主机、Node主机、Harbor仓库 均需要登录

# 登录
docker login ooovooo.org
Username: admin
Password: aaa

# 登出
docker logout ooovooo.org

自定义镜像拉取目录

Master主机、Node主机、Harbor仓库 均需要配置

cd /etc/docker/
vim daemon.json
{
  "registry-mirrors":["https://ooovooo.org"]
}
systemctl restart docker
# 从Harbor仓库的 library 目录中拉取镜像

Master主机

配置Cri-Docker

# 上传 cri-dockerd 和 libcgroup
scp libcgroup-0.41-19.el8.x86_64.rpm cri-dockerd-0.3.14-3.el8.x86_64.rpm root@172.25.254.10:/root/
scp libcgroup-0.41-19.el8.x86_64.rpm cri-dockerd-0.3.14-3.el8.x86_64.rpm root@172.25.254.20:/root/

dnf install libcgroup-0.41-19.el8.x86_64.rpm cri-dockerd-0.3.14-3.el8.x86_64.rpm -y
systemctl enable --now cri-docker

vim /lib/systemd/system/cri-docker.service
# 指定网络插件及基础容器镜像
# 根据Harbor仓库中 k8s 目录下 k8s/pause 的Tags来填写pause的版本
10 ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint fd:// --network-plugin=cni --pod-infra-container-image=ooovooo.org/k8s/pause:3.9

配置kubernetes

vim /etc/yum.repos.d/k8s.repo
[k8s]
name=k8s
baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.30/rpm/
gpgcheck=0

dnf install kubeadm kubectl kubelet -y

Kubectl 命令补齐

dnf install bash-completion -y
echo "source <(kubectl completion bash)" >> ~/.bashrc
source  ~/.bashrc

上传镜像到Harbor仓库

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

# Harbor仓库需要有 k8s 目录且公开
docker images | awk '/google/{ print $1":"$2}' \
| awk -F "/" '{system("docker tag "$0" ooovooo.org/k8s/"$3)}'

docker images  | awk '/k8s/{system("docker push "$1":"$2)}'

Master主机初始化

kubeadm config print init-defaults	# 可查看初始化选项

systemctl enable --now  kubelet.service
systemctl daemon-reload
systemctl restart cri-docker

kubeadm init --pod-network-cidr=10.244.0.0/16 \
# 集群使用的网络,不可修改
--image-repository ooovooo.org/k8s \
# 指定启动容器集群时,从哪里拉取容器镜像
--kubernetes-version v1.30.0 \
# kubernetes版本
--cri-socket=unix:///var/run/cri-dockerd.sock
# 指定sock文件
-------------------------------------------------
# 若初始化失败,需要执行
kubeadm reset --cri-socket=unix:///var/run/cri-dockerd.sock
# 才能再次重新初始化

# 初始化完毕后,获取Master节点状态
kubectl get nodes
# 此时Master未处于 Ready 状态,缺乏网络插件

安装Flannel网络插件

# 拉取Flannel
wget https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
docker pull docker.io/flannel/flannel:v0.25.5
docekr pull docker.io/flannel/flannel-cni-plugin:v1.5.1-flannel1

# 上传至Harbor仓库,仓库需要有 flannel 目录
docker tag flannel/flannel:v0.25.5 ooovooo.org/flannel/flannel:v0.25.5
docker push ooovooo.org/flannel/flannel:v0.25.5

docker tag flannel/flannel-cni-plugin:v1.5.1-flannel1 ooovooo.org/flannel/flannel-cni-plugin:v1.5.1-flannel1
docker push ooovooo.org/flannel/flannel-cni-plugin:v1.5.1-flannel1

vim kube-flannel.yml
146 image: flannel/flannel:v0.25.5
173 image: flannel/flannel-cni-plugin:v1.5.1-flannel1
184 image: flannel/flannel:v0.25.5

Node主机

配置Cri-Docker

dnf install libcgroup-0.41-19.el8.x86_64.rpm cri-dockerd-0.3.14-3.el8.x86_64.rpm -y
systemctl enable --now cri-docker

vim /lib/systemd/system/cri-docker.service
# 指定网络插件及基础容器镜像
# 根据Harbor仓库中 k8s 目录下 k8s/pause 的Tags来填写pause的版本
10 ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint fd:// --network-plugin=cni --pod-infra-container-image=ooovooo.org/k8s/pause:3.9

配置kubernetes

kubeadm 和 kubelet 即可

vim /etc/yum.repos.d/k8s.repo
[k8s]
name=k8s
baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.30/rpm/
gpgcheck=0

dnf install kubeadm kubelet -y

kubernetes 主机扩容

# Master重新生成集群token
kubeadm token create --print-join-command

# Node节点加入集群
kubeadm join 172.25.254.200:6443 --token imt60l.2fcqnep75us948g3 --discovery-token-ca-cert-hash sha256:f536dbcbf4412bd1592fe32fff1470b241989ba1e38a8afc52a8d2459f52b81c --cri-socket=unix:///var/run/cri-dockerd.sock
# 在生成的token,加上--cri-socket=unix:///var/run/cri-dockerd.sock
------------------------------------------------------------------
# 若显示
Run 'kubectl get nodes' on the control-plane to see this node join the cluster.
# 即加入集群成功

# 加入失败,需要重置
kubeadm reset --cri-socket=unix:///var/run/cri-dockerd.sock

kubernetes 测试

# 查看node状态,均处于Ready
kubectl get nodes

# 运行任意镜像
kubectl run ono --image nginx
# 查看Pod信息,关注在哪个Node节点运行
kubectl get pods -o wide
# 在对应节点查看
docker ps
# 删除测试用例
kubectl delete pod ono

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

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

相关文章

养猫家庭有什么宠物空气净化器推荐吗?哪款吸毛效果最好?

不知道你们家的猫最近有没有大量掉毛&#xff1f;还是今早穿短袖感觉到有点冷&#xff0c;我才意识到秋天到了&#xff0c;新一轮的换毛季又来了。不仅和猫咪玩耍的时候可以“采摘”不少毛毛&#xff0c;而且家里的衣服上、地板上也被毛发入侵&#xff0c;感觉用不了多久&#…

Python基础之List列表用法

1、创建列表 names ["张三","李四","王五","Mary"] 2、列表分片 names[1]&#xff1a;获取数组的第2个元素。 names[1:3]&#xff1a;获取数组的第2、第3个元素。包含左侧&#xff0c;不包含右侧。 names[:3]等同于names[0:3]&…

DAY3 JAVA基本语法

了解注释 注释是写在程序中对代码进行解释说明的文字,方便自己和其他人查看,以便理解程序的。 注释不影响程序的运行,编译后的class文件夹没有内容 字面量 在Java中,字面量(literal)是用来表示源代码中常量值的符号。 这些字面量可以直接出现在Java源代码中,并且它们代…

搜狗翻译体验,2024四大翻译工具解析!

为了满足广大用户的需求&#xff0c;市面上涌现出了众多优秀的翻译工具&#xff0c;福昕在线翻译、福昕翻译客户端、海鲸AI翻译、搜狗翻译等。今天&#xff0c;我们就来对比一下这些翻译工具&#xff0c;看看它们各自的特点和优势。 福昕在线翻译&#xff1a;专业精准&#xf…

前端初识之一

网页 什么是网页 网站是指在因特网上根据一定的规则&#xff0c;使用 HTML等制作的用于展示特定内容相关的网页集合。 网页是网站中的一“页”&#xff0c;通常是HTML格式的文件&#xff0c;它要通过浏览器来阅读&#xff0c; 网页是构成网站的基本元素&#xff0c;它通常由…

【通过WSL2安装Ubuntu24.04系统及图形化界面】

WSL&#xff08;Windows Subsystem for Linux&#xff09;是一个为Windows用户设计的兼容层&#xff0c;它允许用户在Windows10和Windows11操作系统上直接运行GNU/Linux环境。WSL提供了一个微软开发的Linux兼容内核接口&#xff0c;使得用户可以在不启动虚拟机或使用双重启动设…

PostgreSQL的学习心得和知识总结(一百五十三)|[performance]将 OR 子句转换为 ANY 表达式

目录结构 注&#xff1a;提前言明 本文借鉴了以下博主、书籍或网站的内容&#xff0c;其列表如下&#xff1a; 1、参考书籍&#xff1a;《PostgreSQL数据库内核分析》 2、参考书籍&#xff1a;《数据库事务处理的艺术&#xff1a;事务管理与并发控制》 3、PostgreSQL数据库仓库…

安装Unity3D并配置VisualStudio

安装Unity3D并配置VisualStudio 由于近期课程要求&#xff0c;需要在电脑上安装Unity3D并配置VisualStudio&#xff0c;所以顺便写了本篇博文 1.下载Unity Hub 首先我们找到Unity中文官网&#xff0c;下载Unity Hub&#xff0c;它可以帮助我们管理我们的Unity项目和版本&#…

vue3.x系列之封装响应式的hooks技巧

v3.x封装一个接口请求的hooks的&#xff0c;都应该很熟练了&#xff0c;那么要实现一个响应式的hooks该怎么做&#xff1f; 实现效果 代码实现 <template><div v-if"error">Oops! Error encountered: {{ error.message }}</div><div v-else-i…

【第2章 开始学习C++】C++语句

文章目录 导语声明语句和变量赋值语句cout的新花样使用cin类简介 导语 C 程序是一组函数&#xff0c; 而每个函数又是一组语句。 C 有好几种语句&#xff0c;例如&#xff1a;声明语句创建变量&#xff0c; 赋值语句给该变量提供一个值。 声明语句和变量 计算机是一种精确的…

selenium-Alert类用于操作提示框/确认弹框(4)

之前文章我们提到&#xff0c;在webdriver.WebDriver类有一个switch_to方法&#xff0c;通过switch_to.alert()可以返回Alert对象&#xff0c;而Alert对象主要用于网页中弹出的提示框/确认框/文本输入框的确认或者取消等动作。 Alert介绍 当在页面定位到提示框/确认框/文本录入…

集成学习和随机森林

集成学习 生活中的集成学习&#xff1a; 买东西找别推荐 import numpy as np import matplotlib.pyplot as pltfrom sklearn import datasetsX, y datasets.make_moons(n_samples500, noise0.3, random_state42)plt.scatter(X[y0,0], X[y0,1]) plt.scatter(X[y1,0], X[y1,1]…

OpenSource - License 开源项目 TrueLicense

文章目录 官网集成Demo 官网 https://truelicense.namespace.global/ https://github.com/christian-schlichtherle/truelicense 集成Demo https://github.com/christian-schlichtherle/truelicense-maven-archetype https://github.com/zifangsky/LicenseDemo https://git…

工厂车间|基于springBoot的工厂车间系统设计与实现(附项目源码+论文+数据库)

私信或留言即免费送开题报告和任务书&#xff08;可指定任意题目&#xff09; 目录 一、摘要 二、相关技术 三、系统设计 四、数据库设计 五、核心代码 六、论文参考 七、源码获取 一、摘要 社会发展日新月异&#xff0c;用计算机应用实现数据管理功能已经算是很完…

《Java基础》常用类

综述 深入理解包装类 和 String类 一、包装类 针对八种基本数据类型都有一个引用类型的包装类&#xff0c;这个类可以自动包装和解包 基本数据类型包装类booleanBooleancharCharacterbyteByteshortShortintIntegerlongLongfloatFloatdoubleDouble 这几个类的继承关系&…

零工市场转型数字化的挑战和机遇

我们的生活因为科技而变的更加方便、便利&#xff0c;例如手机支付、网上购物&#xff0c;那么就目前的就业市场来说&#xff0c;零工市场也面临着数字化转型的挑战和机遇。 零工市场数字化的机遇&#xff1a; 1.通过大数据的计算&#xff0c;极大的提高了零工市场中的匹配效率…

跨平台应用程序本地化过程的特点

跨平台应用程序本地化不仅仅是将单词从一种语言翻译成另一种语言。这是关于调整应用程序&#xff0c;使其无缝融入全球用户的不同文化和语言环境&#xff0c;无论他们使用的是哪种设备或平台。这个过程对于跨平台应用程序来说尤其复杂&#xff0c;它们需要在多个操作系统和设备…

汽车车轮平衡块行业前景:预计2030年全球市场规模将达到10亿美元

汽车车轮平衡块&#xff0c;也称为轮胎平衡块&#xff0c;是一种安装在车轮上的配重部件。它的主要作用是帮助车轮在高速旋转状态下保持动平衡。当车轮高速旋转时&#xff0c;由于车轮的动态不平衡状态&#xff0c;会导致车辆在行驶中出现车轮抖动和方向盘震动的现象。汽车车轮…

[Python] 文件操作详解

文章目录 文件是什么&#xff1f;常用的文件操作函数1. 打开文件2. 关闭文件3. 读取文件(1) read() 方法(2) readline() 方法(3) readlines() 方法 4. 写入文件(1) write() 方法(2) 追加写入 5. 文件读写模式总结 中文文件的处理指定文件编码 上下文管理器示例&#xff1a;使用…

posix接口与system V接口及其异同

POSIX接口和System V接口是用于多线程和进程间通信的两种主要编程接口。它们各自有不同的特点、功能和适用场景。以下是对这两种接口的详细介绍及其异同点。 POSIX接口 特点 标准化: POSIX&#xff08;可移植操作系统接口&#xff09;是由IEEE制定的标准&#xff0c;旨在提供统…