【烂尾】K8S部署
0x01 初见K8S
在地下城的迷宫深处,有一个神奇的存在,它就是Kubernetes!宛如一个勇敢的冒险者,它穿越着这个复杂的迷宫,带领着容器们战胜各种惊险的挑战。
Kubernetes就像是一位无所畏惧的剑士,手握着强大的剑,准备与困难和故障战斗。它以不屈不挠的精神,保护着你的应用程序免受各种怪物的袭击。
在这个神秘的地下城中,Kubernetes就像是一个聪明的魔法师,通过智慧和魔法,将容器编排得井井有条。它使用魔法力量创造出副本集,确保即使遭受到怪物的攻击,你的应用程序依然稳如磐石。
而每个容器都像是一个身手敏捷的盗贼,它们穿梭在迷宫的各个角落,不断执行任务。而Kubernetes就是这个团队的首领,指挥着盗贼们完成各种危险的任务,并保证他们顺利返回基地。
在这个神奇的地下城冒险中,Kubernetes就像是一位英勇的战士,守护着你的应用程序,保证它们始终在最佳状态下运行。它像一面坚固的盾牌,保护你的应用免受敌人的伤害。
总而言之,Kubernetes就是地下城中的超级英雄!它以它独特的能力和智慧,带领着容器们在这个充满挑战的迷宫中闯荡。
0x01a 什么是K8S
Kubernetes(通常简称为K8s)是一个开源的容器编排和管理平台,用于自动化部署、扩展和操作容器化应用程序。它提供了一个强大的容器集群管理系统,能够简化容器化应用的部署、管理和维护。
Kubernetes最初由Google开发,并于2014年发布为开源项目。它建立在容器技术(如Docker)之上,通过集成各种功能来解决容器化应用部署和管理中的复杂性。
Kubernetes的核心概念包括:
Pod(容器组):是Kubernetes中最小的可部署单元,包含一个或多个紧密关联的容器,它们共享网络和存储资源。Service(服务):定义一组Pod的访问方式和网络策略,提供了一个稳定的网络终结点,以便其他应用程序可以访问它们。ReplicaSet(副本集):用于指定运行同一Pod副本的数量,确保在集群中始终存在所需数量的Pod实例。Deployment(部署):用于指定应用程序的期望状态,并在集群中创建和更新副本集,以达到所需的状态。Namespace(命名空间):用于将集群内的资源进行逻辑分组和隔离,以帮助不同的团队或项目在同一集群中管理自己的资源。
Kubernetes提供了大量的功能和特性,如自动伸缩、负载均衡、故障恢复、配置管理等,使得容器化应用可以更加灵活、可靠地运行在分布式环境中。
总而言之,Kubernetes是一个开源的容器编排和管理平台,通过自动化和抽象化的方式,简化了容器化应用的部署、扩展和管理,成为了现代云原生应用开发和部署的标准工具之一。
0x01b 功能特点
Kubernetes(K8s)作为一个容器编排和管理平台,拥有以下一些主要功能和特点:
-
自动化容器部署和扩展:Kubernetes可以自动处理容器的创建、启动、停止和删除,根据应用程序的需求进行水平扩展,从而有效地管理应用程序的生命周期。
-
负载均衡和服务发现:Kubernetes提供内建的负载均衡机制,可以将流量智能地分配到应用程序的各个实例上。它还提供了服务发现功能,使得其他应用程序可以轻松地找到和访问服务。
-
自我修复和健康检查:Kubernetes具备自我修复的能力,它会监控应用程序的运行状态,并在出现故障时自动重新启动失败的容器。同时,它支持健康检查机制,可以定期检查容器的健康状况,并根据检查结果采取相应措施。
-
配置和存储管理:Kubernetes提供了灵活的配置管理功能,允许用户通过配置文件或环境变量来更新应用程序的参数。此外,Kubernetes还提供了持久化存储的支持,可以帮助应用程序在容器重启或迁移时保留数据。
-
水平扩展和资源管理:Kubernetes支持水平扩展,可以根据应用程序的负载情况动态调整容器的数量。它还提供了资源管理功能,可以对容器的资源使用进行限制和分配,确保每个容器都能得到适当的资源。
-
多租户和安全性:Kubernetes支持多租户模式,可以将不同团队或项目的容器隔离在不同的命名空间中,确保它们之间的资源不会冲突。同时,Kubernetes还提供了安全功能,如基于角色的访问控制(RBAC),以保护集群和应用程序的安全。
总的来说,Kubernetes的主要功能是自动化容器部署和扩展、负载均衡和服务发现、自我修复和健康检查、配置和存储管理、水平扩展和资源管理,以及多租户和安全性等特点。这些功能和特点使得Kubernetes成为一款强大而灵活的容器编排和管理工具。
0x02 组件部署
0x02a 配置要求
0x02b 部署方法
0x02c 镜像源
编辑/etc/apt/sources.list文件, 在文件最前面添加以下条目(操作前请做好相应备份):
deb https://repo.huaweicloud.com/ubuntu-ports/ bionic main restricted universe multiverse
deb-src https://repo.huaweicloud.com/ubuntu-ports/ bionic main restricted universe multiverse
deb https://repo.huaweicloud.com/ubuntu-ports/ bionic-security main restricted universe multiverse
deb-src https://repo.huaweicloud.com/ubuntu-ports/ bionic-security main restricted universe multiverse
deb https://repo.huaweicloud.com/ubuntu-ports/ bionic-updates main restricted universe multiverse
deb-src https://repo.huaweicloud.com/ubuntu-ports/ bionic-updates main restricted universe multiverse
deb https://repo.huaweicloud.com/ubuntu-ports/ bionic-backports main restricted universe multiverse
deb-src https://repo.huaweicloud.com/ubuntu-ports/ bionic-backports main restricted universe multiverse
https://repo.huaweicloud.com/kubernetes/
##Not recommended
#deb https://repo.huaweicloud.com/ubuntu-ports/ bionic-proposed main restricted universe multiverse
#deb-src https://repo.huaweicloud.com/ubuntu-ports/ bionic-proposed main restricted universe multiverse
配置完镜像源后
apt update
apt upgrade
0x02b 配置主机信息
修改hosts文件
echo '''
[ip address] [hostname]
[ip address] [hostname]
[ip address] [hostname]
''' >> /etc/hosts
echo '''
192.168.0.156 k8s-master-156
192.168.0.23 k8s-node-23
192.168.0.169 k8s-node-169
''' >> /etc/hosts
修改主机名
hostnamectl set-hostname k8s-master-156hostnamectl set-hostname k8s-node-23hostnamectl set-hostname k8s-node-169
0x02c install docker
安装版本
Docker version 20.10.25, build 20.10.25-0ubuntu1~20.04.1
sudo apt install docker.io
0x02ca docker configuration
cgroups(Control Groups)在Docker中是一种Linux内核特性,用于限制、控制和隔离进程组的资源使用。它在Docker中起到了以下几个作用:
-
资源限制:通过cgroups,Docker可以对运行在容器中的进程组施加资源限制,如CPU、内存、磁盘IO等。这样可以确保容器之间不会相互干扰,防止某个容器过度占用资源导致整个系统性能下降。
-
资源隔离:cgroups允许Docker在主机上创建多个资源隔离的容器,并为每个容器分配适量的CPU、内存等资源。这样,每个容器就可以在自己的资源限制下独立运行,相互之间互不影响。
-
资源统计:cgroups还提供了对容器中资源使用情况的统计信息,例如CPU使用时间、内存使用量等。这些统计数据可以帮助运维人员监控和优化容器的资源利用情况,并做出相应的调整。
总之,cgroups在Docker中起到了资源限制、资源隔离和资源统计的作用,使得Docker能够更好地管理和控制容器的资源使用,提高系统的稳定性和性能。
打开需要修改的文件
sudo vi /etc/docker/daemon.json
输入需要修改的内容
{"registry-mirrors": ["https://mirror.ccs.tencentyun.com","https://reg-mirror.qiniu.com","https://quay-mirror.qiniu.com"],"exec-opts": [ "native.cgroupdriver=systemd" ]
}
配置文件修改后保存
sudo systemctl daemon-reload
sudo systemctl restart docker
使用docker info | grep Cgroup,出现下列信息则代表修改成功
Cgroup Driver: systemd
其他机器重复以上步骤
0x03 install k8s
0x03a 组件介绍
以下是对 Kubernetes 的三个主要组件 kubelet、kubeadm 和 kubectl 的简要介绍:
-
kubelet:
kubelet 是 Kubernetes 集群中每个节点上的代理服务。它负责管理节点上的容器运行时(如 Docker),以及与 Master 节点通信,接收来自 Master 节点的指令并执行相应操作。kubelet 监控节点上的资源使用情况,确保 Pod 在节点上正确运行,并与 Master 节点协调其状态。 -
kubeadm:
kubeadm 是一个命令行工具,用于在 Kubernetes 集群中初始化和管理 Master 节点。使用 kubeadm,你可以轻松地创建一个全新的 Kubernetes 集群或将已有的节点加入现有集群。它自动处理集群的初始化过程,包括生成证书、创建配置文件和安装所需的组件等。kubeadm 还提供了一些管理集群的常用命令和功能。 -
kubectl:
kubectl 是 Kubernetes 集群的命令行客户端工具,用于与 Kubernetes API Server 进行交互,管理和操作集群中的资源。通过 kubectl,你可以创建、更新和删除各种 Kubernetes 资源,如 Pod、Service、Deployment 等。它还提供了查看集群状态、调试应用程序和执行其他管理任务的功能。
这三个组件在 Kubernetes 中扮演着重要的角色。kubelet 负责节点上的容器管理和与 Master 节点的通信,kubeadm 简化了集群的初始化和管理过程,而 kubectl 提供了一个强大的命令行接口,用于管理和操作 Kubernetes 集群。结合使用这三个组件,你可以轻松地创建、部署和管理容器化应用程序。
一键安装(如何可以运行)
apt-get install -y kubelet kubeadm kubectl
备份配置文件
cp /etc/apt/sources.list.d/kubernetes.list /etc/apt/sources.list.d/kubernetes.list.bak
修改配置文件
cat <<EOF > /etc/apt/sources.list.d/kubernetes.list
deb https://repo.huaweicloud.com/kubernetes/apt/ kubernetes-xenial main
EOF
添加kubernetes的key
curl -s https://repo.huaweicloud.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
更新索引文件并安装kubernetes
sudo apt update
sudo apt install -y kubeadm kubelet kubectl
0x03b 技术总结
sudo apt install docker.io
cat <<EOF > /etc/docker/daemon.json
{"registry-mirrors": ["https://mirror.ccs.tencentyun.com","https://reg-mirror.qiniu.com","https://quay-mirror.qiniu.com"],"exec-opts": [ "native.cgroupdriver=systemd" ]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
docker info | grep Cgroup
cat <<EOF > /etc/apt/sources.list.d/kubernetes.list
deb https://repo.huaweicloud.com/kubernetes/apt/ kubernetes-xenial main
EOF
curl -s https://repo.huaweicloud.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
sudo apt update
sudo apt install -y kubeadm kubelet kubectl
0x04 k8s配置
0x04a master init
拉取coredns镜像
docker pull coredns/coredns:1.8.4
docker tag coredns/coredns:1.8.4 registry.aliyuncs.com/google_containers/coredns:v1.8.4
Initialization Kubeadm
kubeadm init \
--apiserver-advertise-address=[ip address] \
--image-repository registry.aliyuncs.com/google_containers \
--pod-network-cidr=[cidr]
demo
kubeadm init \
--apiserver-advertise-address=192.168.0.156 \
--image-repository registry.aliyuncs.com/google_containers \
--pod-network-cidr=10.244.0.0/16
烂尾
相关文章:

【烂尾】K8S部署
0x01 初见K8S 在地下城的迷宫深处,有一个神奇的存在,它就是Kubernetes!宛如一个勇敢的冒险者,它穿越着这个复杂的迷宫,带领着容器们战胜各种惊险的挑战。 Kubernetes就像是一位无所畏惧的剑士,手握着强大…...

电机故障诊断(python程序,模型为MSCNN结合LSTM结合注意力机制模型,有注释)
代码运行环境要求:TensorFlow版本>2.4.0,python版本>3.6.0 1.电机常见的故障类型有以下几种: 轴承故障:轴承是电机运转时最容易受损的部件之一。常见故障包括磨损、疲劳、过热和润滑不良,这些问题可能导致噪音增…...

二叉树(ACM版)
【数据结构1-2】二叉树 - 题单 - 洛谷 【数据结构】day2-树_J娇娇_的博客-CSDN博客 上学时的作业 P1827 [USACO3.4] 美国血统 American Heritage 二叉树特点写法(非二叉树) 截取字符串写法 #include<string> #include<cstring> #include…...

Scratch 之 如何制作鼠标框(2)—— 鼠标框框定角色
hello,大家好,欢迎来到鼠标框系列的第二课时! 咱们废话不多说,直接开始 首先,温故知新一下,上个教程我们讨论了如何绘制鼠标框,网址:绘制鼠标框 你说,一个鼠标框&…...

爬虫逆向实战(九)--猿人学第十三题
一、数据接口分析 主页地址:猿人学第十三题 1、抓包 通过抓包可以发现数据接口是api/match/13 2、判断是否有加密参数 请求参数是否加密? 无请求头是否加密? 无响应是否加密? 无cookie是否加密? 在“cookie”模块…...

NeuralNLP-NeuralClassifier的使用记录(一),训练预测自己的【英文文本多分类】
NeuralNLP-NeuralClassifier的使用记录,训练预测自己的英文文本多分类 NeuralNLP-NeuralClassifier是腾讯开发的一个多层多分类应用工具,支持的任务包括,文本分类中的二分类、多分类、多标签,以及层次多标签分类。支持的文本编码…...

Pycharm社区版连接WSL2中的Mysql8.*
当前时间2023.08.13,Windows11中默认的WSL版本已经是2了,在WSL2中默认的Ubuntu版本已经是22.04,而Ubuntu22.04中默认的Mysql版本已经是8.*。 Wsl 2 中安装mysql WSL2中安装Mysql的方法参考自微软官方文档【开始使用适用于 Linux 的 Windows …...

前端传递参数时,form-data 和 json 的区别
在传递参数时,form-data 和 JSON 是两种常见的数据格式。 form-data 是一种多部分表单数据格式,通常用于上传文件或包含二进制数据的表单提交。它使用 multipart/form-data 格式来编码数据。在使用 form-data 格式时,数据会被分割成多个部分&…...

FairyGUI-Unity侧菜单扩展
目录 缘由: 分析: 准备: 完整代码: 缘由: 在使用FairyGUI作为项目UI开发时,有时会使用FairyGUI提供的Scripting Define Symbols。当前FairyGUI中的Scripting Define Symbols有: 骨骼动画 …...

学习笔记十八:污点、容忍度
污点、容忍度 污点、容忍度管理节点污点把k8snode2当成是生产环境专用的,其他node是测试的给k8snode1也打上污点 污点、容忍度 给了节点选则的主动权,我们给节点打一个污点,不容忍的pod就运行不上来,污点就是定义在节点上的键值属…...

amis百度前端框架,在js中使用amis写json转页面
amis百度前端框架,在js中使用用amis写的json页面 1.在项目中使用百度 amis 的sdk做开发库。 <script src="./sdk/sdk/sdk.js"></script> 2。加载sdk中的库: amis = amisRequire(amis/embed);amisLib = amisRequire(amis);const match = amisRequire…...

openEuler安装jdk、openEuler离线安装jdk、openEuler设置jdk、openEuler在线安装
记录一下本人使用openEuler安装jdk的过程,希望能帮到看到帖子的你! 方式一:在线安装: 在 openEuler 上安装 JDK(Java Development Kit)的步骤如下: 更新系统: 在安装 JDK 之前,建议先更新系统软件包。打开终端并执行以下命令: sudo dnf update 这将更新系统中的软…...

Photoshop制作漂亮光泽感3D按钮
原文链接(https://img-blog.csdnimg.cn/45472c07f29944458570b59fe1f9a0e0.png)...

【网络爬虫】模拟登录与代理
代理...

无线局域网基础知识与架构
1.1 无线局域网 无线局域网(Wireless Local Area Network,WLAN)是指以无线信道作为传输 媒介的计算机局域网络,是计算机网络与无线通信技术相结合的产物,它以无线多 址信道作为传输媒介,提供传统有线局域网的功能,能…...

uniapp tabbar 浏览器调试显示 真机不显示
解决方案,把tabBar里面的单位全改为px,rpx是不会显示的! 注意了,改完一定要重新运行,不然无效,坑爹 "tabBar": {"borderStyle": "black","selectedColor": &quo…...

极智AI | 地平线BPU跑通YOLOv5
欢迎关注我的公众号 [极智视界],获取我的更多经验分享 大家好,我是极智视界,本文来介绍一下 地平线BPU跑通YOLOv5。 邀您加入我的知识星球「极智视界」,星球内有超多好玩的项目实战源码下载,链接:https://t.zsxq.com/0aiNxERDq 硬件设备为地平线旭日x3,开发环境和执行环…...

循环服务器(同时连接多个客户端,为每个客户端创建一个子进程处理其消息)
服务器 客户端 结果...

【从零学习python 】38.Python包的使用及导入方式
文章目录 包的使用1. 导入包的方式总结2. __init__.py文件有什么用3. __all__ 注意事项进阶案例 包的使用 一个模块就是一个 py 文件,在 Python 里为了对模块分类管理,就需要划分不同的文件夹。多个有联系的模块可以将其放到同一个文件夹下,为…...

docker 容器满了常用处理方法
docker 容器满了常用处理方法 1、运行 df -h 查看剩余磁盘占用情况 2、进入到docker目录 cd /var/lib/docker 3、运行du -h --max-depth1 (检索文件的最大深度1,即只检索汇总计算当前目录下的文件) 4、进入占用最大的 /containers文件夹&am…...

28、springboot的静态模版(前端页面)重加载和 devtools开发者工具
springboot的静态模版重加载和 devtools开发者工具 总结:实现静态模板重加载的两个方法 方法1:在 yml 配置文件,关闭页面模板缓存, 再按 ctrlf9 重新构建 方法2:直接添加 devtools 依赖,再按 ctrlf9 重新构…...

[FPGA IP系列] FPGA常用存储资源大全(RAM、ROM、CAM、SRAM、DRAM、FLASH)
本文主要介绍FPGA中常用的RAM、ROM、CAM、SRAM、DRAM、FLASH等资源。 一、RAM RAM(Random Access Memory)是FPGA中最基本和常用的内部存储块,根据不同架构可以实现不同容量,最大可达几十Mb。 FPGA中的RAM主要包括: 分布式RAM:存在于逻辑块…...
Spark SQL优化:NOT IN子查询优化解决
背景 有如下的数据查询场景。 SELECT a,b,c,d,e,f FROM xxx.BBBB WHERE dt ${zdt.addDay(0).format(yyyy-MM-dd)} AND predict_type not IN ( SELECT distinct a FROM xxx.AAAAAWHERE dt ${zdt.addDay(0).format(yyyy-MM-dd)} ) 分析 通过查看SQL语句的执行计划基本…...

代码审计-java项目-组件漏洞审计
代码审计必备知识点: 1、代码审计开始前准备: 环境搭建使用,工具插件安装使用,掌握各种漏洞原理及利用,代码开发类知识点。 2、代码审计前信息收集: 审计目标的程序名,版本,当前环境(系统,中间件…...

接口测试的测试用例该怎么写呢
接口测试是软件测试中非常重要的一部分,因为接口的稳定性和可靠性对于整个系统的质量和用户体验都有很大的影响。在接口测试中,编写有效的测试用例是非常关键的一步。本文将介绍如何编写接口测试的测试用例,包括测试用例的设计和编写方法&…...

C语言例题讲解(if语句,循环语句,函数)
目录 if语句例题题目分析代码题目总结 循环语句例题题目分析代码题目总结 函数例题题目分析代码题目总结 if语句例题 计算1/1-1/21/3-1/41/5 …… 1/99 - 1/100 的值,打印出结果题目分析 1:首先我们不难看出算式中的加号和减号是交替出现的࿰…...

深入探索JavaEE单体架构、微服务架构与云原生架构
课程链接: 链接: https://pan.baidu.com/s/1xSI1ofwYXfqOchfwszCZnA?pwd4s99 提取码: 4s99 复制这段内容后打开百度网盘手机App,操作更方便哦 --来自百度网盘超级会员v4的分享 课程介绍: 🔍【00】模块零:开营直播&a…...

【STM32】FreeRTOS互斥量学习
互斥量(Mutex) 互斥量又称互斥信号量(本质也是一种信号量,不具备传递数据功能),是一种特殊的二值信号量,它和信号量不同的是,它支持互斥量所有权、递归访问以及防止优先级翻转的特性…...

Docker容器基础
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、Docker概述1、docker是什么2、Docker的设计宗旨3、容器在内核中支持2种重要技术: 三、Docker的核心概念四、Docker相关命令1.安装依赖包2.设置阿里云…...

Ajax及前端工程化
Ajax:异步的js与xml。 作用: 1、通过ajax给服务器发送数据,并获得其响应的数据。 2、可以在不更新整个网页的情况下,与服务器交换数据并更新部分网页的技术。 一、同步与异步 二、原生Ajax 1、准备数据地址 2、创建XMLHttpReq…...