【烂尾】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…...
React 第五十五节 Router 中 useAsyncError的使用详解
前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...
关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...
Android15默认授权浮窗权限
我们经常有那种需求,客户需要定制的apk集成在ROM中,并且默认授予其【显示在其他应用的上层】权限,也就是我们常说的浮窗权限,那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...
JAVA后端开发——多租户
数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...
基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解
JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...
python爬虫——气象数据爬取
一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用: 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests:发送 …...
深度剖析 DeepSeek 开源模型部署与应用:策略、权衡与未来走向
在人工智能技术呈指数级发展的当下,大模型已然成为推动各行业变革的核心驱动力。DeepSeek 开源模型以其卓越的性能和灵活的开源特性,吸引了众多企业与开发者的目光。如何高效且合理地部署与运用 DeepSeek 模型,成为释放其巨大潜力的关键所在&…...
