K8s集群的环境部署

1.测试环境所需要的主机名和IP和扮演的角色

harbor 172.25.254.200 harbor仓库

k8s-master 172.25.254.100 k8s集群控制节点

k8s-node1 172.25.254.10 k8s集群工作节点

k8s-node2 172.25.254.20 k8集群工作节点

注意:所有节点禁用selinux和防火墙

所有节点同步时间和地址解析

所有节点安装docker

所有节点禁用swap 注意注释掉/etc/fstab文件中的定义

为什么禁用swap?

内存速度远快于 Swap,使用 Swap 会导致性能下降,影响节点和应用响应速度。

Kubernetes 依赖 kubelet 管理节点资源,而 kubelet 默认无法有效处理 Swap,可能导致资源分配错误。

Swap 可能延迟内存压力的响应,导致节点或 Pod 进入不稳定状态。

关闭所有节点的火墙和禁用iptables

1.master 和node harbor禁用swap

swapon -s#查看磁盘名

Filename                Type        Size        Used        Priority
/dev/dm-1                               partition    2097148        0        -2

]# systemctl mask swap.target

]# swapoff -a

]# vim /etc/fstab

#/dev/mapper/rhel-swap swap swap defaults 0 0

/dev/cdrom /media iso9660 defaults 0 0

2.master和node harbor都做本地解析

[root@k8s-master ~]# vim /etc/hosts

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4

::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

172.25.254.100 k8s-master.timinglee.org

172.25.254.10 k8s-node1.timinglee.org

172.25.254.20 k8s-node2.timinglee.org

172.25.254.254 reg.timinglee.org

3.master和node harbor都安装docker

[root@k8s-master ~]# 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

[root@k8s-master ~]# dnf install docker-ce -y

4.所有节点设定 docker资源管理模式为systemd

[root@k8s-master ~]# vim /etc/docker/daemon.json

{

"registry-mirrors": ["https://reg.timinglee.org"],

"exec-opts": ["native.cgroupdriver=systemd"],

"log-driver": "json-file",

"log-opts": {

                "max-size": "100m"

},

  "storage-driver": "overlay2"

}

4.复制harbor仓库中的证书并启动docker

 k8s-master:#mkdir /etc/docker/certs.d/reg.timinglee.org/ -p

harbor:#scp /data/certs/timinglee.org.crt root@172.25.254.100:/etc/docker/certs.d/reg.timinglee.org/ca.crt

同时把密钥拷给所有node节点

确保master和所有节点都能访问harbor仓库

5.安装k8s部署工具

添加软件仓库中k8s源

[root@k8s-master ~]# vim /etc/yum.repos.d/k8s.repo

[k8s] name=k8s

baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.30/rpm

gpgcheck=0

#安装软件 [root@k8s-master ~]# dnf install kubelet-1.30.0 kubeadm-1.30.0 kubectl-1.30.0 -y

4.设置kubectl命令补全功能

[root@k8s-master ~]# dnf install bash-completion -y 

[root@k8s-master ~]# echo "source > ~/.bashrc

[root@k8s-master ~]# source ~/.bashrc

5.在master节点拉取k8s所需要的镜像

kubeadm config print init-defaults

手动指定镜像下载位置和容器管理接口

kubeadm config images pull \

--image-repository registry.aliyuncs.com/google_containers \  #拉取镜像的位置现在我们所用的为aliyun的

--kubernetes-version v1.30.0 \  #需要的版本

--cri-socket=unix:///var/run/cri-dockerd.sock   #拉取需要连接容器控制器使用

先在master登录harbor仓库

拉取结束上传至我们的harbor仓库

[root@k8s-master ~]# docker images | awk '/google/{ print $1":"$2}' \ | awk -F "/" '{system("docker  tag "$0" reg.timinglee.org/k8s/"$3)}'

[root@k8s-master ~]# docker images | awk '/k8s/{system("docker push "$1":"$2)}'

6..在节点安装cri-docker

k8s从1.24版本开始就移除了dockershim 所以节点安装cri-docker插件才能使同docker

在节点安装插件和插件依赖性用docker管理k8s 和docker依赖

vim/lib/systemd/system/cri-docker.service#编写该文件夹 加上网络插件和根容器

指定网络插件名称及基础容器镜像 ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint fd:// --networkplugin=cni --pod-infra-container-image=reg.timinglee.org/k8

systemctl daemon-reload

以上操作master和node节点都要做

例:scp -r /lib/systemd/system/cri-docker.service  @root172.25.254.10:/lib/systemd/system/cri-docker.service

7.集群初始化

#kubeadm init --pod-network-cidr=192.188.0.0/16 \  #初始化并设定容器集群的网络

--image-repository reg.timinglee.org/k8s \  #

--kubernetes-version v1.30.0 \ #指k8s版本

--cri-socket=unix:///var/run/cri-dockerd.sock #指定插件使docker和k8s结合到一起使用

#kubeadm reset --cri-socket=unix:///var/run/cri-dockerd.sock重置集群

8.指定主配置文件

#指定集群配置文件变量 [

root@k8s-master ~]# echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile

source ~/.bash_profile

初始化完成

9.安装网络插件

导入flannel插件 和 kube-flannel.yml

将网络插件导入到本地docker仓库 并且上传到harbor仓库中

kubectl apply -f kube-flannel.yml 安装flannel.yml

10.节点扩容

1.禁用swap

2.安装kubelet-1.30.0 kubeadm-1.30.0 kubectl-1.30.0

docker-ce

cri-dockerd#连接docker和k8s 的 还有一个依赖

修改cri-dockerd启动文件添加 vim /lib/systemd/system/cri-docker.service

ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint fd:// --networkplugin=cni --pod-infra-container-image=reg.timinglee.org/k8s/pause:3.9

5 启动服务 kubelet.service cri-docker.service

root@k8s-node1 & 2 ~]# kubeadm join 172.25.254.100:6443 --token 5hwptm.zwn7epa6pvatbpwf --discovery-token-ca-cert-hash sha256:52f1a83b70ffc8744db5570288ab51987ef2b563bf906ba4244a300f61e9db23 --crisocket=unix:///var/run/cri-dockerd.soc

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

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

相关文章

pytest自动化测试[面试篇]

pytest是python的测试框架,它提供了许多功能, 测试运行 组织pytest的测试用例代码:模块名称以test_开头,类名以Test开头,函数名以test_开头, 然后用pytest命令即可运行测试用例。 可以在命令行中,用pyte…

树莓派急速安装ubuntu;映射磁盘与储存磁盘文件;ubuntu映射整个工程;保存系统工作状态

一、用途 在使用树莓派上下载ubuntu时,需要一张sd卡,当你需要给这张卡做备份的时候,可以是使用磁盘映射软件,从而达到备份的目的 同时有一些大佬发布了ubuntu的映射文件,可以直接使用该文件,然后还原他的整…

Python学习第十九天

Django-分页 后端分页 Django提供了Paginator类来实现后端分页。Paginator类可以将一个查询集(QuerySet)分成多个页面,每个页面包含指定数量的对象。 from django.shortcuts import render, redirect, get_object_or_404 from .models impo…

Windows下安装Git客户端

① 官网地址:https://git-scm.com/。 ② Git的优势 大部分操作在本地完成,不需要联网;完整性保证;尽可能添加数据而不是删除或修改数据;分支操作非常快捷流畅;与Linux 命令全面兼容。 ③ Git的安装 从官网…

刷题练习笔记

目录 1、消失的数字 2、旋转数组 3、原地移除元素 4、删除排序数组中的重复项 1、消失的数字 oj:面试题 17.04. 消失的数字 - 力扣(LeetCode) 思路(参考评论区): 利用异或的特性,ret ret …

C或C++中实现数据结构课程中的链表、数组、树和图案例

1. 双向链表&#xff08;Doubly Linked List&#xff09;-----支持双向遍历。 C实现 #include <iostream>struct Node {int data;Node* prev;Node* next; };class DoublyLinkedList { private:Node* head; public:DoublyLinkedList() : head(nullptr) {}// 在链表末尾插…

94.HarmonyOS NEXT动画系统实现教程:深入理解FuncUtils

温馨提示&#xff1a;本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦&#xff01; HarmonyOS NEXT动画系统实现教程&#xff1a;深入理解FuncUtils 文章目录 HarmonyOS NEXT动画系统实现教程&#xff1a;深入理解FuncUtils1. 动画系…

AI日报 - 2025年3月17日

&#x1f31f; 今日概览&#xff08;60秒速览&#xff09; ▎&#x1f916; AGI突破 | GPT-o1在卡内基梅隆大学数学考试中获满分&#xff0c;展示AI数学能力新高度 成本仅5美分/题&#xff0c;推理速度不到1分钟 ▎&#x1f4bc; 商业动向 | Figure推出BotQ机器人制造设施&…

Tauri + Vite + SvelteKit + TailwindCSS + DaisyUI 跨平台开发详细配置指南(Windows)

Tauri Vite SvelteKit TailwindCSS DaisyUI 跨平台开发详细配置指南&#xff08;Windows&#xff09; 本文为博主原创文章&#xff0c;遵循 CC 4.0 BY-SA 版权协议。转载请注明出处及本声明 原文链接&#xff1a;[你的文章链接] &#x1f6e0;️ 环境准备 1. 安装核心工具…

在 macOS 上优化 Vim 用于开发

简介 这篇指南将带你通过一系列步骤&#xff0c;如何在 macOS 上优化 Vim&#xff0c;使其具备 代码补全、语法高亮、代码格式化、代码片段管理、目录树等功能。此外&#xff0c;我们还会解决在安装过程中可能遇到的常见错误。 1. 安装必备工具 在开始 Vim 配置之前&#xff…

golang开发支持onlyoffice的token功能

一直都没去弄token这块&#xff0c;想着反正docker run的时候将jwt置为false即可。 看了好多文章&#xff0c;感觉可以试试&#xff0c;但是所有文件几乎都没说思路。 根据我的理解和成功的调试&#xff0c;思路是&#xff1a; 我们先定义2个概念&#xff0c;一个是文档下载…

Android wifi的开关Settings值异常分析

Android wifi的开关Settings值异常分析 文章目录 Android wifi的开关Settings值异常分析一、前言二、异常分析1、adb或者串口获取Settings的wifi开关值2、代码获取wifi开关值3、根据日志分析代码(1)logcat 对应的wifi开启日志的代码①WifiServiceImpl.java② WifiSettingsStore…

C#的委托Action

在 C# 中&#xff0c;Action 是一个预定义的委托类型&#xff0c;它位于 System 命名空间下。下面详细介绍它的作用和使用方法。 作用 Action 委托的主要作用是封装一个方法&#xff0c;这个方法没有返回值&#xff08;即返回类型为 void&#xff09;。它提供了一种简洁的方式…

Qt MainWindow简单例子(文本编辑)

使用Qt控件练习文本编辑窗口的创建。 #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <QLabel> #include <QProgressBar>QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACEclass MainWindow : public Q…

DeepSeek-prompt指令-当DeepSeek答非所问,应该如何准确的表达我们的诉求?

当DeepSeek答非所问&#xff0c;应该如何准确的表达我们的诉求&#xff1f;不同使用场景如何向DeepSeek发问&#xff1f;是否有指令公式&#xff1f; 目录 1、 扮演专家型指令2、 知识蒸馏型指令3、 颗粒度调节型指令4、 时间轴推演型指令5、 极端测试型6、 逆向思维型指令7、…

Mac中nvm切换node版本失败,关闭终端再次打开还是之前的node

Mac中使用 nvm 管理 node 版本&#xff0c;在使用指令&#xff1a;nvm use XXX 切换版本之后。 关闭终端&#xff0c;再次打开&#xff0c;输入 node -v 还是得到之前的 node 版本。 原因&#xff1a; 在这里这个 default 中有个 node 的版本号&#xff0c;使用 nvm use 时&a…

织梦dedecmsV5.7提示信息提示框美化(带安装教程和效果展示)

一、效果展示 1、安装前效果 2、安装后效果 二、安装说明 1、安装测试版本&#xff1a;DedeCMS-V5.7.117-UTF8&#xff1b; 2、必须在修改代码之前请做好文件备份&#xff0c;以免误操无法恢复&#xff1b; 3、为了兼容其他版本&#xff0c;请在安装时&#xff0c;最好将替…

Science Advances 视触觉传感机制的交互装置,可以实时测量来自手不同部位的分布力

近日&#xff0c;由香港科技大学&#xff08;HKUST&#xff09;电子与计算机工程学系申亚京教授领导的研究团队&#xff0c;提出了一种基于数字通道的触觉交互系统&#xff0c;可以实时测量来自手不同部位的分布力&#xff0c;有望在医学评估、体育训练、机器人和虚拟现实&…

MySQL单表查询大全【SELECT】

山再高&#xff0c;往上攀&#xff0c;总能登顶&#xff1b;路再长&#xff0c;走下去&#xff0c;定能到达。 Mysql中Select 的用法 ------前言------【SELECT】0.【准备工作】0.1 创建一个库0.2 库中创建表0.3 表中加入一些数据 1.【查询全部】2.【查询指定列】2.1查询指定列…

Vue调用子组件init方法时报错Cannot read properties of undefined (reading ‘init‘)解决方法

调用init方法语句写在this.$nextTick(() > {});方法里&#xff0c;因为nextTick方法在页面元素加载完之后调用 this.$nextTick(() > {this.$refs.chartComponent.init();});如果还报错&#xff1a;Error in nextTick: "TypeError: Cannot read properties of undef…