Kubernetes 的正式安装

1.基础的网络结构说明

软件路由器

ikuai

当然同一个仅主机模式 相当于在 同一个我们所谓的广播域内 所以相当于它们的几张网卡 是被连接起来的 

为了防止出现问题 我们可以把第二块网卡临时关闭一下

2.准备路由器

ikuai

爱快 iKuai-商业场景网络解决方案提供商 (ikuai8.com)

 测试环境用 32位就可以了 因为用不到那么高性能,完全浪费,但是生产环境必须64位

 

 

 

 1  回车

需要配置一定的信息

选择2 回车

 

esc 返回 

 q 退出

 q 锁定 就可以离开这里了

浏览器输入 192.168.72.200 默认重定向到这里 

用户名密码都是admin

 纯软件实现的路由器

 关闭

绑定外网网卡

 把剩下的一块网卡进行绑定

 默认是DHCP

但在真实生产环境中我们都是通过 拨号 或者 静态固定IP去提供网络访问能力的

3.配置虚拟机

 1.配置第一块仅主机网卡

vi /etc/NetworkManager/system-connections/ens160.nmconnection

三台机器都改完

address1=仅主机的ip/子网掩码位,网关路由器ip

dns 域名 加一下

 2.关闭第二块nat网卡

vi /etc/NetworkManager/system-connections/ens192.nmconnection

autoconnect=false

 三台主机配置完 

:wq 保存退出

3.重启

如果重启就不用执行下面三条命令了 三台机器都做

 先不重启在做完下面配置在重启

4.关闭swap分区

如果你的机器本身初始化出来就是为了安装kubernetes集群的 你在分区的时候就没必要分 swap 分区

如果分了 那么怎么关闭

下面就是关闭的方法

swapoff -a

相当于把开机自启的那个命令注释掉 

sed -i 's:/dev/mapper/rl-swap:#/dev/mapper/rl-swap:g' /etc/fstab

 不是永久执行的 执行上面第二条命令即可永久 生效

5.修改主机名

hostnamectl set-hostname k8s-master01
hostnamectl set-hostname k8s-node01
hostnamectl set-hostname k8s-node02

设置域名

vi /etc/hosts
192.168.72.11 k8s-master01 m1
192.168.72.12 k8s-node01 n1
192.168.72.13 k8s-node02 n2
192.168.72.14 harbor

m1 位为简写

n1 同理

后面可能搭建 harbor 所以提前设置一下用到的域名

嫌麻烦可以拷贝到另一台主机上

 6.安装 ipvs

yum install -y ipvsadm

7.开启每个节点的路由转发

echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf
sysctl -p

8.安装epel 加载 bridge

yum install -y epel-release
yum install -y bridge-utils

9.加载 br_netfilter 模块

modprobe br_netfilter
echo 'br_netfilter' >> /etc/modules-load.d/bridge.conf
echo 'net.bridge.bridge-nf-call-iptables=1' >> /etc/sysctl.conf
echo 'net.bridge.bridge-nf-call-ip6tables=1'>> /etc/sysctl.conf
sysctl -p

10.安装docker

yum -y install yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

1.配置daemon.json

sudo cat <<EOF > /etc/docker/daemon.json
{
    "default-ipc-mode": "shareable",
    "data-root": "/data/docker",
    "exec-opts": ["native.cgroupdriver=systemd"],
    "log-driver": "json-file",
    "log-opts": {
        "max-size": "100m",
        "max-file": "100"
    },
    "insecure-registries": ["harbor.xinxainghf.com"],
    "registry-mirrors": [
          "https://hub.skillixx.com",
          "https://docker.m.daocloud.io",
          "https://noohub.ru",
          "https://huecker.io",
          "https://dockerhub.timeweb.cloud",
          "https://docker.rainbond.cc",
          "https://hpbe2ezf.mirror.aliyuncs.com",
          "https://kfp63jaj.mirror.aliyuncs.com"
     ]
}
EOF
mkdir -p /etc/systemd/system/docker.service.d

2.重启docker

systemctl daemon-reload
systemctl enable --now docker

11.重启一下

reboot

完美运行 

4.安装 cri-docker

讲解一下

CRI关系图

 kubernetes 想要移出docker 移出的是 中间的转化的关系 也就是 CRI语言转化为 OCRI 

但是docker 又有公司实现了 CRI 转化为 OCRI 名为 cri-docker

1.下载cri-docker 

wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.9/cri-dockerd-0.3.9.amd64.tgz
tar -xf cri-dockerd-0.3.9.amd64.tgz
mv ./cri-dockerd/cri-dockerd /usr/bin/
chmod a+x /usr/bin/cri-dockerd

2.编写服务管理脚本

cat <<"EOF" > /usr/lib/systemd/system/cri-docker.service
[unit]
Description=CRI Interface for Docker Application Container Engine
Documentation=https://docs.mirantis.com
After=network-online.target firewalld.service docker.service
Wants=network-online.target
Requires=cri-docker.socket
[Service]
Type=notify
ExecStart=/usr/bin/cri-dockerd
--network-plugin=cni
--pod-infra-container-
image=registry.aliyuncs.com/google_containers/pause:3.8
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=O
RestartSec=2
Restart=always
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
Delegate=yes
KillMode=process
[Install]
WantedBy=multi-user.target
EOF

用多少版本就几版本 

docker pull registry.aliyuncs.com/google_containers/pause:3.8

 

3.添加cri-docker 套接字生成脚本

cat <<"EOF" > /usr/lib/systemd/system/cri-docker.socket
[unit]
Description=CRI Docker Socket for the API
Partof=cri-docker.service
[Socket]
Listenstream=%t/cri-dockerd.sock
SocketMode=0660
SocketUser=root
SocketGroup=docker
[Install]
WantedBy=sockets.target
EOF

4.启动cri-docker服务

sudo systemctl daemon-reload
systemctl enable --now cri-docker
systemctl is-active cri-docker

5.安装 kubeadm 

1.添加yum源

cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.29/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.29/rpm/repodata/repomd.xml.key
exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni
EOF

2.安装kubeadm 1.29

sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes

3.设置开机自启

sudo systemctl enable  kubelet

4.初始化主节点

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

如果科学上网 可以不加

 --kubernetes-version 1.29.14 

--image-repository registry.aliyuncs.com/google_containers

重要重要重要!!!

一定要在三个节点都拉去 pause 镜像 他可能会用到两个版本的 我这里有 kubeadm config images list 指定的 3.9 但是 他初始化的时候用的 3.6所以最好两个版本都下 然后三个节点都要拉取镜像 要不然会有问题 ,经验 !!!!!!!!!!

 mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

5.将另外两个节点加入集群

kubeadm join 192.168.72.11:6443 --token c52o1r.gxeerfkrhsx0zen1 \
        --discovery-token-ca-cert-hash sha256:eb622ff0b73ad808efde62dd362daee34b00fa7f541cb227a907d86ee72f31a4 --cri-socket unix:///var/run/cri-dockerd.sock 

--cri-socket unix:///var/run/cri-dockerd.sock 需要在命令指定套接字 为 docker

1.检查是否加入

kubectl get node

 

2.如果token过期后 需要重新创建 

kubeadm token create --print-join-command

6.部署网络插件

1.安装calico

准备好

unzip ./calico.zip

 这是calico运行所需要的所有的镜像

1.解压镜像 

tar -zxvf calico-images.tar.gz

2.加载镜像

这四个镜像每个节点都要导入

docker load -i calico-cni-v3.26.3.tar
docker load -i calico-node-v3.26.3.tar
docker load -i calico-kube-controllers-v3.26.3.tar
docker load -i calico-typha-v3.26.3.tar

传输到 n1 的设备 下 的 /root 

scp -r calico-images root@n1:/root/

3.执行安装

 把部署文件利用在集群上 

kubectl apply -f calico-typha.yaml

这个文件需要改一些地方

关闭IPIP 

需要与前面创建集群的时候 那个 pod cidr一致 

 查看网络的 pod

 kubectl get pod -A

需要 在子节点 装 pause 的镜像 没有就起不来 这是经验

完美运行一个集群 三个节点

7.如果我们在安装集群时有多块网卡并且没有关闭

1.固定网卡(可选)

指定目标域名可达的网卡 

匹配正则的网卡 

忽略正则的网卡 

 指定一个网段范围

修改kube-proxy 模式为 ipvs

这几种方式 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【为什么会有 map、weakmap 类型?】

为什么会有 map、weakmap 类型? 传统对象的局限性催生 Map‌1. 键类型单一性‌2. 有序性与迭代支持‌3. 性能优化场景‌ 内存管理需求催生 WeakMap‌1.弱引用机制‌2. 私有数据存储‌3. 规避循环引用问题‌ 总结 传统对象的局限性催生 Map‌ 1. 键类型单一性‌ 传统对象&…

HTML-05NPM使用踩坑

2025-03-04-NPM使用踩坑 本文讲述了一个苦逼程序员在使用NPM的时候突然来了一记nmp login天雷&#xff0c;然后一番折腾之后&#xff0c;终究还是没有解决npm的问题&#x1f61e;&#x1f61e;&#x1f61e;,最终使用cnpm完美解决的故事。 文章目录 2025-03-04-NPM使用踩坑[toc…

java后端开发day27--常用API(二)正则表达式爬虫

&#xff08;以下内容全部来自上述课程&#xff09; 1.正则表达式&#xff08;regex&#xff09; 可以校验字符串是否满足一定的规则&#xff0c;并用来校验数据格式的合法性。 1.作用 校验字符串是否满足规则在一段文本中查找满足要求的内容 2.内容定义 ps&#xff1a;一…

鸿蒙HarmonyOS评论功能小demo

评论页面小demo 效果展示 1.拆解组件&#xff0c;分层搭建 我们将整个评论页面拆解为三个组件&#xff0c;分别是头部导航&#xff0c;评论项&#xff0c;回复三个部分&#xff0c;然后统一在index界面导入 2.头部导航界面搭建 Preview Component struct HmNavBar {// 属性&a…

智能机器人学习机WT3000A AI芯片方案-自然语音交互 打造沉浸式学习体验

一、概述 当AI浪潮席卷全球&#xff0c;教育领域也未能幸免。AI学习机&#xff0c;这个打着“个性化学习”、“精准提分”旗号的新兴产品&#xff0c;正以惊人的速度占领市场。从一线城市到偏远乡镇&#xff0c;从学龄前儿童到高考备考生&#xff0c;AI学习机的广告铺天盖地&am…

鸿蒙与DeepSeek深度整合:构建下一代智能操作系统生态

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 https://www.captainbed.cn/north 目录 技术融合背景与价值鸿蒙分布式架构解析DeepSeek技术体系剖析核心整合架构设计智能调度系统实现…

【UCB CS 61B SP24】Lecture 22 23: Tree and Graph Traversals, DFS, BFS 学习笔记

本文讲解了二叉树的四种遍历方式&#xff0c;以及如何通过前/后序遍历与中序遍历重建出二叉树&#xff0c;接着介绍了新的非线性数据结构&#xff1a;图&#xff0c;详细讲解了图的存储方式与遍历方式&#xff0c;最后使用 Java 基于邻接表的存储方式实现了图与 DFS、BFS 两种遍…

GCC RISCV 后端 -- C语言语法分析过程

在 GCC 编译一个 C 源代码时&#xff0c;先会通过宏处理&#xff0c;形成 一个叫转译单元&#xff08;translation_unit&#xff09;&#xff0c;接着进行语法分析&#xff0c;C 的语法分析入口是 static void c_parser_translation_unit(c_parser *parser); 接着就通过类似递…

Swagger-01.介绍和使用方式

一.Swagger介绍 有了接口文档&#xff0c;我们就可以根据接口文档来开发后端的代码了。如果我们开发完了某个功能&#xff0c;后端如何验证我们开发的是否正确呢&#xff1f;我们就需要测试&#xff0c;使用Swagger就可以帮助后端生成接口文档&#xff0c;并且可以进行后端的接…

MAVEN的环境配置

在下载好maven后或解压maven安装包后进行环境配置 1.在用户环境变量中 新建一个MAVEN_HOME 地址为MAVEN目录 注&#xff1a;地址为解压后maven文件的根目录&#xff01;&#xff01;&#xff01; 2.在系统环境变量的path中添加该变量 %MAVEN_HOME%\bin 3. 测试maven安装是否成…

分布式存储学习——HBase概述

1.1 HBase概述 1.1.1 理解大数据背景 1.1.2 HBase是什么 1.1.3 HBase与Hadoop的关系 1.1.4 HBase的核心功能模块 1.1.5 HBase的应用场景和经典案例 1.1.6 小结 本文参考于学校《HBase应用于开发》教材 1.1 HBase概述 本节将介绍大数据背景和HBase的基本概念&#xff0c…

TypeError: Assignment to constant variable.

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 &#x1f35a; 蓝桥云课签约作者、…

Chain of Draft: 借鉴人类草稿思维让大型语言模型更快地思考

这个研究探讨了大型语言模型&#xff08;LLMs&#xff09;在执行复杂推理任务时面临的计算资源消耗与响应延迟问题。研究特别聚焦于思维链&#xff08;Chain-of-Thought, CoT&#xff09;提示范式的效率局限性。CoT虽然有效&#xff0c;但在推理过程中需要生成冗长、详尽的逐步…

从零开始实现大语言模型(十三):预训练大语言模型GPTModel

1. 前言 使用梯度下降算法通过下一个token预测任务预训练大语言模型GPTModel&#xff0c;前向传播流程每次会输入一个batch的长度均为context_len的训练样本&#xff0c;执行 batch_size context_len \text{batch\_size}\times\text{context\_len} batch_sizecontext_len次下…

vue3:初学 vue-router 路由配置

承上一篇&#xff1a;nodejs&#xff1a;express js-mdict 作为后端&#xff0c;vue 3 vite 作为前端&#xff0c;在线查询英汉词典 安装 cnpm install vue-router -S 现在讲一讲 vue3&#xff1a;vue-router 路由配置 cd \js\mydict-web\src mkdir router cd router 我还…

档案AI审核1

需求&#xff1a; 处理扫描件和图像档案&#xff0c;解决AI决策能力&#xff0c;引入NLP和CV技术&#xff0c;形成多层次审核体系&#xff0c;解析jpg内容并校验结构&#xff0c;自定义训练审核模型&#xff0c;智能档案合规性检查&#xff0c;档案自动化审核&#xff0c;标注…

MC9S12单片机上电初始化过程及BOOTLOADER分析

上电过程 上电后&#xff0c;CPU从固定的位置读取复位向量。 这个固定的位置就是0xFFFE。是芯片厂商出厂时预设好的。 这个地址是NON_BANKED的。这个位置保存的是复位向量&#xff0c;实际上就是一个函数指针。该函数指针指向_Startup()函数。 map文件: 注意&#xff1a;程序…

Oxidized收集H3C交换机网络配置报错,not matching configured prompt (?-mix:^(<CD>)$)

背景&#xff1a;问题如上标题&#xff0c;H3C所有交换机配置的model都是comware 解决方案&#xff1a; 1、找到compare.rb [rootoxidized model]# pwd /usr/local/lib/ruby/gems/3.1.0/gems/oxidized-0.29.1/lib/oxidized/model [rootoxidized model]# ll comware.rb -rw-r--…

【算法方法总结·四】字符串操作的一些技巧和注意事项

【算法方法总结四】字符串操作的一些技巧和注意事项 【算法方法总结一】二分法的一些技巧和注意事项【算法方法总结二】双指针的一些技巧和注意事项【算法方法总结三】滑动窗口的一些技巧和注意事项【算法方法总结四】字符串操作的一些技巧和注意事项 【字符串操作】 此章节涉…

Halcon 算子 一维码检测识别、项目案例

首先我们要明白码的识别思路 把窗口全部关闭读取新的图片图像预处理创建条码模型设置模型参数搜索模型获取条码结果显示条码结果 图像预处理和条码增强 对比度太低&#xff1a; scale_image&#xff08;或使用外部程序scale_image_range&#xff09;,增强图像的对比度图像模糊…