k8s的简介和部署
一、k8s简介
在部署应用程序的方式上面,主要经历了三个阶段:

传统部署:互联网早期,会直接将应用程序部署在物理机上
优点:简单,不需要其它技术的参与
缺点:不能为应用程序定义资源使用边界,很难合理地分配计算资源,而且程序之间容易产生影响
虚拟化部署:可以在一台物理机上运行多个虚拟机,每个虚拟机都是独立的一个环境
优点:程序环境不会相互产生影响,提供了一定程度的安全性
缺点:增加了操作系统,浪费了部分资源
容器化部署:与虚拟化类似,但是共享了操作系统
容器化部署方式给带来很多的便利,但是也会出现一些问题:
一个容器故障停机了,怎么样让另外一个容器立刻启动去替补停机的容器当并发访问量变大的时候,怎么样做到横向扩展容器数量
kubenetes简介:
Kubernetes 是一个可移植、可扩展的开源平台,用于管理容器化的工作负载和服务,方便进行声明式配置和自动化。Kubernetes 拥有一个庞大且快速增长的生态系统,其服务、支持和工具的使用范围广泛。
二、k8s部署
| 主机名 | ip | 角色 |
| docker-harbor.revkarl.org | 172.25.254.250 | harbor仓库 |
| k8s-master | 172.25.254.100 | master,k8s集群控制节点 |
| k8s-node1 | 172.25.254.10 | worker,k8s集群工作节点 |
| k8s-node2 | 172.25.254.20 | worker,k8s集群工作节点 |
所有节点关闭selinux和防火墙
systemctl disabled firewalld
systemctl stop firewalld
grubby --update-kernel ALL --args selinux=0
reboot
所有节点在每次开启的时候禁用swapon分区:
vim /etc/rc.d/rc.local
swapoff /dev/dm-1
chmod +x /etc/rc.d/rc.local
所有节点做好dns解析:
cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.25.254.10 k8s-node1
172.25.254.20 k8s-node2
172.25.254.100 k8s-master
172.25.254.250 reg.revkarl.org
所有节点安装docker:
cat /etc/yum.repos.d/docker-ce.repo
[docker]
name=docker
baseurl=https://mirrors.aliyun.com/docker-ce/linux/rhel/9/x86_64/stable/
gpgcheck=0
dnf install docker-ce -y
在所有的k8s节点创建放置证书的目录:
mkdir -p /etc/docker/certs.d/reg.revkarl.org/
把harbor仓库里的证书拷贝给k8s所有节点:
ls /data/certs/
revkarl.org.crt revkarl.org.key
scp /data/certs/revkarl.org.crt root@172.25.254.100:/etc/docker/certs.d/reg,revkarl.org/ca.crt
启动docker仓库:
systemctl enable --now docker
登陆之后查看harbor仓库的认证:
docker login reg.revkarl.org
docker info

现在我们就可以安装k8s部署工具了
[root@k8s-master ~]# cat /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 kubelet-1.30.0 kubeadm-1.30.0 kubectl-1.30.0 -y
设置kubectl命令补齐功能:
dnf install bash-completion -y
echo "source <(kubectl completion bash)" >> ~/.bashrc
source ~/.bashrc
在所有节点安装cri-docker
dnf install libcgroup-0.41-19.el8.x86_64.rpm \
> cri-dockerd-0.3.14-3.el8.x86_64.rpm -y
指定网络插件名称以及基础容器镜像
vim /lib/systemd/system/cri-docker.service

fd:// --network-plugin=cni --pod-infra-container-image=reg.revkarl.org/k8s/pause:3.9
systemctl daemon-reload
systemctl start cri-docker
ll /var/run/cri-dockerd.sock
srw-rw---- 1 root docker 0 10月 5 18:03 /var/run/cri-dockerd.sock
在master节点拉取k8s所需镜像:
kubeadm config images pull \
--image-repository registry.aliyuncs.com/google_contaniers \
--kubernetes-version v1.30.0 \
--cri-socket=unix:///var/run/cri-dockerd.sock
上传镜像到harbor仓库
docker images | awk '/google/{ print $1":"$2}' \
| awk -F "/" '{system("docker tag "$0" reg.revkarl.org/k8s/"$3)}'
docker images | awk '/k8s/{system("docker push "$1":"$2)}'

三、集群初始化
启动kubelet服务
systemctl enable --now kubelet
systemctl status kubelet.service

执行初始化命令:
kubeadm init --pod-network-cidr=10.244.0.0/16 \
--image-repository reg.revkarl.org/k8s \
--kubernetes-version v1.30.0 \
--cri-socket=unix:///var/run/cri-dockerd.sock
指定集群配置文件变量:
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
安装flannel网络插件:
下载flanne]的yaml部署文件
wget https://github.com/flanne7.io/flannel/releases/latest/download/kube-flannel.yml
拉取镜像:
docker pull docker.io/flannel/flannel:v0.25.5
docekr docker.io/flannel/flannel-cni-plugin:v1.5.1-flannel1
上传镜像到仓库 :
docker tag flannel/flannel:v0.25.5reg.timinglee.org/flannel/flannel:v0.25.5
docker push reg.timinglee.org/flannel/flannel:v0.25.5
docker tag flannel/flannel-cni-plugin:v1.5.1-flannel1reg.timinglee.org/flannel/flannel-cni-plugin:v1.5.1-flannel1
docker push reg.timinglee.org/flannel/flannel-cni-plugin:v1.5.1-flanne11
修改镜像下载位置:
vim kube-flannel.yml
146: image:reg.timinglee.org/flannel/flannel:v0.25.5
173: image:reg.timinglee.org/flannel/flannel-cni-plugin:v1.5.1-flannel1
184: image:reg.timinglee.org/flannel/flannel:v0.25.5
应用网络插件:
kubectl apply -f kube-flannel.yml
加入集群:
kubeadm join 172.25.254.100:6443 --token5hwptm.zwn7epa6pvatbpwf--discovery-token-ca-cert-hashsha256:52f1a83b70ffc8744db5570288ab51987ef2b563bf906ba4244a300f61e9db23 --cri-socket=unix:///var/run/cri-dockerd.sock
在master节点中查看所有node的状态:
kubectl get nodes

所有节点的状态都为ready,那么恭喜你装成功了!!
可以像我这样跑个nginx镜像试试:

相关文章:
k8s的简介和部署
一、k8s简介 在部署应用程序的方式上面,主要经历了三个阶段: 传统部署:互联网早期,会直接将应用程序部署在物理机上优点:简单,不需要其它技术的参与缺点:不能为应用程序定义资源使用边界,很难合理地分配计算资源&…...
Thingsboard 网关实战 modbus通信 rpc下发控制指令
我们这里说的是Thingsboard通过网关modbus通信接入设备,然后通过rpc下发指令去控制开关信号的设备,不会网关通过modbus接入设备的,可以看我之前的文章,从小白教学。 下面我们就说如何下发rpc开关信号指令 第一步.在modbus配置文…...
基于pytorch的手写数字识别
import pandas as pd import numpy as np import torch import matplotlib import matplotlib.pyplot as plt from torch.utils.data import TensorDataset, DataLoadermatplotlib.use(tkAgg)# 设置图形配置 config {"font.family": serif,"mathtext.fontset&q…...
MySQL 实验 7:索引的操作
MySQL 实验 7:索引的操作 索引是对数据表中一列或多列的值进行排序的一种结构,索引可以大大提高 MySQL 的检索速度。合理使用索引,可以大大提升 SQL 查询的性能。 索引好比是一本书前面的目录,假如我们需要从书籍查找与 xx 相关…...
为Floorp浏览器添加搜索引擎及搜索栏相关设置. 2024-10-05
Floorp浏览器开源项目地址: https://github.com/floorp-Projects/floorp/ 1.第一步 为Floorp浏览器添加搜索栏 (1.工具栏空白处 次键选择 定制工具栏 (2. 把 搜索框 拖动至工具栏 2.添加搜索引擎 以添加 搜狗搜索 为例 (1.访问 搜索引擎网址 搜狗搜索引擎 - 上网从搜狗开始 (2…...
如何设置WSL Ubuntu在Windows开机时自动启动
如何设置WSL Ubuntu在Windows开机时自动启动 步骤详解1. 创建批处理脚本2. 添加到Windows启动项 注意事项结语 在使用Windows Subsystem for Linux (WSL) 时,我们可能希望Ubuntu能够在Windows启动时自动运行。本文将介绍如何实现这一功能,让您的开发环境更加便捷。 步骤详解 …...
使用TensorBoard可视化模型
目录 TensorBoard简介 神经网络模型 可视化 轮次-损失曲线 轮次-准确率曲线 轮次-学习率曲线 迭代-评估准确率曲线 迭代-评估损失曲线 TensorBoard简介 TensorBoard是一款出色的交互式的模型可视化工具。安装TensorFlow时,会自动安装TensorBoard。如图: TensorFlow可…...
《深度学习》OpenCV 图像拼接 原理、参数解析、案例实现
目录 一、图像拼接 1、直接看案例 图1与图2展示: 合并完结果: 2、什么是图像拼接 3、图像拼接步骤 1)加载图像 2)特征点检测与描述 3)特征点匹配 4)图像配准 5)图像变换和拼接 6&am…...
Hive数仓操作(三)
一、Hive 数据库操作 1. 创建数据库 基本创建数据库命令: CREATE DATABASE bigdata;说明: 数据库会在 HDFS 中以目录的形式创建和保存,数据库名称会存储在 Hive 的元数据中。如果不指定目录,数据库将在 /user/hive/warehouse 下…...
TDSQL-C电商可视化,重塑电商决策新纪元
前言: 在数字化浪潮席卷全球的今天,电子商务行业以其独特的魅力和无限潜力,成为了推动全球经济增长的重要引擎。然而,随着业务规模的急剧扩张,海量数据的涌现给电商企业带来了前所未有的挑战与机遇。如何高效地处理、…...
翔云 OCR:发票识别与验真
在数字化时代,高效处理大量文档和数据成为企业和个人的迫切需求。翔云 OCR 作为一款强大的光学字符识别工具,在发票识别及验真方面表现出色,为我们带来了极大的便利。 一、翔云 OCR 简介 翔云 OCR 是一款基于先进的人工智能技术开发的文字识别…...
HTML ASCII:Web 开发中的字符编码基础
HTML ASCII:Web 开发中的字符编码基础 ASCII,全称为美国信息交换标准代码(American Standard Code for Information Interchange),是一种用于电子通信的字符编码标准。它最初于1963年提出,用于在不同的计算…...
Meta 首个多模态大模型一键启动!首个多针刺绣数据集上线,含超 30k 张图片
小扎在 Meta Connect 2024 主题演讲中宣布推出首个多模态大模型 Llama 3.2 vision!该模型有 11B 和 90B 两个版本,成为首批支持多模态任务的 Llama 系列模型,根据官方数据,这两个开原模型的性能已超越闭源模型。 小编已经迫不及待…...
阿里云ECS服务器仿真
1.首先使用qemu-img对RAW镜像进行转换,qemu-img convert -O vmdk 1.raw 2.vmdk 2.使用WinHex对镜像的root密码进行删除 3.由于这次阿里云ECS使用了CONFIG_SYSTEM_TRUSTED_KEYS验证,无法直接仿真,需使用live系统对内核进行修改。分为以下几步&…...
如何为树莓派安装操作系统,以及远程操控树莓派的两种方法,无线操控和插网线操控
文章目录 一、下载树莓派的系统二、将文件下载到SD卡中1.使用官方软件2.其他选择 三、远程连接电脑安装vnc-viewer1.无线操作(配置树莓派,开启VNC)电脑远程配置2.有线连接(需要一根网线) 总结 一、下载树莓派的系统 下…...
【最新华为OD机试E卷-支持在线评测】简单的自动曝光(100分)多语言题解-(Python/C/JavaScript/Java/Cpp)
🍭 大家好这里是春秋招笔试突围 ,一枚热爱算法的程序员 💻 ACM金牌🏅️团队 | 大厂实习经历 | 多年算法竞赛经历 ✨ 本系列打算持续跟新华为OD-E/D卷的多语言AC题解 🧩 大部分包含 Python / C / Javascript / Java / Cpp 多语言代码 👏 感谢大家的订阅➕ 和 喜欢�…...
每日一练:等差数列划分
413. 等差数列划分 - 力扣(LeetCode) 题目要求: 如果一个数列 至少有三个元素 ,并且任意两个相邻元素之差相同,则称该数列为等差数列。 例如,[1,3,5,7,9]、[7,7,7,7] 和 [3,-1,-5,-9] 都是等差数列。 给…...
Kotlin真·全平台——Kotlin Compose Multiplatform Mobile(kotlin跨平台方案、KMP、KMM)
前言 随着kotlin代码跨平台方案的推出,kotlin跨平台一度引起不少波澜。但波澜终归没有掀起太大的风浪,作为一个敏捷型开发的公司,依然少不了Android和iOS的同步开发,实际成本和效益并没有太多变化。所以对于大多数公司来说依然风平…...
unity 默认渲染管线材质球的材质通道,材质球的材质通道
标准渲染管线——材质球的材质通道 文档,与内容无关,是介绍材质球的属性的。 https://docs.unity3d.com/2022.1/Documentation/Manual/StandardShaderMaterialParameters.html游戏资源中常见的贴图类型 https://zhuanlan.zhihu.com/p/260973533 十大贴图…...
PostgreSQL升级:使用pg_upgrade进行大版本(16.3)升级(17.0)
1.pg_upgrade工具介绍 pg_upgrade 会创建新的系统表,并以重用旧的数据文件的方式进行升级。 pg_upgrade 的参数选项如下: -b bindir,--old-bindirbindir:旧的 PostgreSQL 可执行文件目录; -B bindir,--new-…...
在rocky linux 9.5上在线安装 docker
前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
django filter 统计数量 按属性去重
在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...
最新SpringBoot+SpringCloud+Nacos微服务框架分享
文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...
【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...
管理学院权限管理系统开发总结
文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...
GO协程(Goroutine)问题总结
在使用Go语言来编写代码时,遇到的一些问题总结一下 [参考文档]:https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现: 今天在看到这个教程的时候,在自己的电…...
Python Einops库:深度学习中的张量操作革命
Einops(爱因斯坦操作库)就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库,用类似自然语言的表达式替代了晦涩的API调用,彻底改变了深度学习工程…...
uniapp 实现腾讯云IM群文件上传下载功能
UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中,群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS,在uniapp中实现: 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...
