k8s环境搭建(从创建完一台虚拟机开始)

embedded/2025/3/1 21:37:18/

注意: 在这之前,所有主机需要关闭防火墙!!!

1.  docker 安装

所有主机都需要

1.1配置仓库
vim   /etc/yum.repos.d/docker.repo

https://mirror.tuna.tsinghua.edu.cn/docker-ce/linux/rhel/9/x86_64/stable/

1.2 下载

yum install -y docker-ce --allowerasing

1.3 启动

systemctl enable --now docker

1.4 配置软件仓库,就是yum仓库

2.harbor仓库创建

2.1 解压离线包(也可以去官网下)

tar zxf harbor-offline-installer-v2.5.4.tgz

2.2 修改配置文件

cd  harbor
cp harbor.yml.tmpl harbor.yml
vim harbor.yml

只需要修改这四处

2.3 管理harbor的容器

docker compose stop     停止所有容器
docker compose  up -d   开启所有容器

!!!证书创建

openssl req -newkey rsa:4096 -nodes -sha256 -keyout certs/tingjieli.org.key -addext "subjectAltName = DNS:reg.tingjieli.org" -x509 -days 365 -out certs/tingjieli.org.crt

2.4 将证书给其他主机

证书密码位置:/data/certs

scp /data/certs/tingjieli.org.crt  root@192.168.40.100/etc/docker/certs.d/reg.tingjieli.org/ca.crt

其他主机也一样的操作

3.master 和 slave 都配置docker并连接到harbor

3.1 修改/etc/hosts文件

因为容器启动ip会变化,所以用域名

注意:windows也需要修改hosts文件

3.2 修改docker 的yum地址

3.3 注意事项

如果登陆不上,可以尝试着重启harbor的容器

4.k8s部署

4.1 禁用交换分区、防火墙、selinux

注意:所有的交换分区必须禁用,不然k8s检测过不去

在关闭交换分区时通过注释配置文件不生效,可以通过以下方式

systemctl list-unit-files | grep swap   查看本地的交换分区

systemctl  mask dev-mapper-rhel\\x2dswap.swap  将这个分区锁了

swapoff /dev/dm-1

在 /etc/fatab注释掉开机自启

4.2 安装k8s部署工具

[k8s]
name=k8s
baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.30/rpm/
gpgcheck=0

dnf install kubelet-1.30.0-150500.1.1  kubeadm-1.30.0-150500.1.1  kubectl-1.30.0-150500.1.1 -y
4.3 设置kubectl补齐命令

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

4.4 安装cri-docker
cp cri-dockerd-0.3.14-3.el8.x86_64.rpm  /opt   插件
cp libcgroup-0.41-19.el8.x86_64.rpm  /opt    插件的依赖
​dnf install *.rpm 
systemctl start cri-docker
4.5在master节点上拉取k8s需要的镜像

拉取镜像

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

解释:第一个是镜像仓库地址,第二个选择的k8s版本,第三个用来连接docker的控制器。这里是用sock来连

将镜像上传到仓库

打包tag

docker images | awk '/google/{ print $1":"$2 }' | awk -F "/" '{system("docker tag "$0" reg.tingjieli.org/k8s/"$3)}'

上传

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

注释:pause 根容器,运行其他容器之前需要运行这个,提供网络等信息,相当于操作系统

4.6 集群初始化

kubeadm init --pod-network-cidr=10.244.0.0/16 --image-repository reg.tingjieli.org/k8s  --kubernetes-version v1.30.0 --cri-socket=unix:///var/run/cri-dockerd.sock 

如果不行的话:

记得重置

kubeadm reset --cri-socket=unix:///var/run/cri-dockerd.sock

重置成功

/*

需要指定网络插件和根容器

一定要指定!!!

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

然后重启

systemctl daemon-reload

systemctl start cri-docker

*/这里是node需要的

还需要指定主配置文件

临时:export KUBECONFIG=/etc/kubernetes/admin.conf
永久:echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile

source ~/.bash_profile

还缺少网络插件

4.7 安装网络插件

vim kube-flannel.yml

将image这一行修改为reg.tingjieli.org(有三行)

上传flannel镜像(两个)

docker load -i flannel-0.25.5.tag

docker tag flannel/flannel:v0.25.5 reg.tingjieli.org/flannel/flannel:v0.25.5

docker push reg.tingjieli.org/flannel/flannel:v0.25.5

docker tag flannel/flannel-cni-plugin:v1.5.1-flannel1 reg.tingjieli.org/flannel/flannel-cni-plugin:v1.5.1-flannel1

docker push reg.tingjieli.org/flannel/flannel-cni-plugin:v1.5.1-flannel1

安装!!!

kubectl apply -f kube-flannel.yml

4.8 生成集群token

kubeadm token create --print-join-command

--cri-socket=unix:///var/run/cri-dockerd.sock

4.9 node节点加入集群

这里如果写错了,就用kubeadm reset 命令

加入的作用就是开启容器

搭建完成!!

练习

查看在哪里运行

纠正

因为我之前初始化集群的时候IP设置的有问题

之前我们这里配置的IP和flannel冲突了

删掉集群以及重置

在我们安装网络插件的时候,日志报的地址冲突,我们需要修改回去

安装flannel插件

vim  kube-flannel.yml

不用加harbor网址,它会自动去下载

kubectl apply -f kube-flannel.yml

注意:其他节点在加入前,记得reset一下

最后一定要是这个状态,否则pod起不来


http://www.ppmy.cn/embedded/169154.html

相关文章

RabbitMQ 集群部署方案

RabbitMQ 一、安装 RabbitMQ 二、更改配置文件 三、配置集群 四、测试 环境准备&#xff1a;三台服务器&#xff0c;系统是 CentOS7 IP地址分别是&#xff1a; rabbitmq1&#xff1a;192.168.152.71rabbitmq2&#xff1a;192.168.152.72rabbitmq3&#xff1a;192.168.152.…

三个小时学完vue3(一)

Vue3 之前就学过一些&#xff0c;不过用的比较少&#xff0c;基本忘完了/(ㄒoㄒ)/~~ 跟着B站视频迅速回忆一下 创建一个Vue 3 应用 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport&…

【PyCharm安装】【Python安装】【PyCharm使用】全流程

2025 - 02 - 28 - 第 64 篇 Author: 郑龙浩 / 仟濹 【PyCharm安装】【Python安装】【PyCharm使用】 文章目录 Python安装PyCharm安装及使用一 Python安装1 **Python 安装包里都包括什么呢&#xff1f;&#xff1f;&#xff1f;**2 安装时的一些选项勾选有何作用&#xff1f;(1…

【愚公系列】《Python网络爬虫从入门到精通》035-DataFrame数据分组统计整理

标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。近期荣誉2022年度…

ssh配置 远程控制 远程协作 github本地配置

0.设备版本 windows11 ubuntu24.0.4 1.1 在 Linux 上启用 SSH 服务 首先&#xff0c;确保 Linux 计算机上安装并启用了 SSH 服务。 安装和启动 OpenSSH 服务&#xff08;如果未安装&#xff09; # 在终端安装 OpenSSH 服务&#xff08;如果尚未安装&#xff09; sudo apt …

行为型模式 - 状态模式 (State Pattern)

行为型模式 - 状态模式 (State Pattern) 状态模式是一种行为设计模式&#xff0c;它允许对象在其内部状态改变时改变它的行为&#xff0c;对象看起来似乎修改了它的类。下面为你介绍几个状态模式的经典案例。 // 抽象状态类 abstract class LiftState {protected Lift lift;pu…

Brave 132 编译指南 Android 篇 - 初始化构建环境 (六)

1. 引言 在成功配置好 Python、Node.js 等基础开发环境并切换到正确的 Brave 版本分支之后&#xff0c;我们来到了编译前的最后一个关键环节&#xff1a;初始化 Brave 浏览器的构建环境。这个过程就好比为一场盛大的演出搭建舞台、调试灯光音响&#xff0c;确保所有必要的组件…

HTTP~文件 MIME 类型

MIME&#xff08;Multipurpose Internet Mail Extensions&#xff09;类型&#xff0c;即多用途互联网邮件扩展类型&#xff0c;是一种标准&#xff0c;用来表示文档、文件或字节流的性质和格式。最初是为了在电子邮件系统中支持非 ASCII 字符文本、二进制文件附件等而设计的&a…