当前位置: 首页 > news >正文

【烂尾】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)作为一个容器编排和管理平台,拥有以下一些主要功能和特点:

  1. 自动化容器部署和扩展:Kubernetes可以自动处理容器的创建、启动、停止和删除,根据应用程序的需求进行水平扩展,从而有效地管理应用程序的生命周期。

  2. 负载均衡和服务发现:Kubernetes提供内建的负载均衡机制,可以将流量智能地分配到应用程序的各个实例上。它还提供了服务发现功能,使得其他应用程序可以轻松地找到和访问服务。

  3. 自我修复和健康检查:Kubernetes具备自我修复的能力,它会监控应用程序的运行状态,并在出现故障时自动重新启动失败的容器。同时,它支持健康检查机制,可以定期检查容器的健康状况,并根据检查结果采取相应措施。

  4. 配置和存储管理:Kubernetes提供了灵活的配置管理功能,允许用户通过配置文件或环境变量来更新应用程序的参数。此外,Kubernetes还提供了持久化存储的支持,可以帮助应用程序在容器重启或迁移时保留数据。

  5. 水平扩展和资源管理:Kubernetes支持水平扩展,可以根据应用程序的负载情况动态调整容器的数量。它还提供了资源管理功能,可以对容器的资源使用进行限制和分配,确保每个容器都能得到适当的资源。

  6. 多租户和安全性: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中起到了以下几个作用:

  1. 资源限制:通过cgroups,Docker可以对运行在容器中的进程组施加资源限制,如CPU、内存、磁盘IO等。这样可以确保容器之间不会相互干扰,防止某个容器过度占用资源导致整个系统性能下降。

  2. 资源隔离:cgroups允许Docker在主机上创建多个资源隔离的容器,并为每个容器分配适量的CPU、内存等资源。这样,每个容器就可以在自己的资源限制下独立运行,相互之间互不影响。

  3. 资源统计: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 的简要介绍:

  1. kubelet:
    kubelet 是 Kubernetes 集群中每个节点上的代理服务。它负责管理节点上的容器运行时(如 Docker),以及与 Master 节点通信,接收来自 Master 节点的指令并执行相应操作。kubelet 监控节点上的资源使用情况,确保 Pod 在节点上正确运行,并与 Master 节点协调其状态。

  2. kubeadm:
    kubeadm 是一个命令行工具,用于在 Kubernetes 集群中初始化和管理 Master 节点。使用 kubeadm,你可以轻松地创建一个全新的 Kubernetes 集群或将已有的节点加入现有集群。它自动处理集群的初始化过程,包括生成证书、创建配置文件和安装所需的组件等。kubeadm 还提供了一些管理集群的常用命令和功能。

  3. 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 在地下城的迷宫深处&#xff0c;有一个神奇的存在&#xff0c;它就是Kubernetes&#xff01;宛如一个勇敢的冒险者&#xff0c;它穿越着这个复杂的迷宫&#xff0c;带领着容器们战胜各种惊险的挑战。 Kubernetes就像是一位无所畏惧的剑士&#xff0c;手握着强大…...

电机故障诊断(python程序,模型为MSCNN结合LSTM结合注意力机制模型,有注释)

代码运行环境要求&#xff1a;TensorFlow版本>2.4.0&#xff0c;python版本>3.6.0 1.电机常见的故障类型有以下几种&#xff1a; 轴承故障&#xff1a;轴承是电机运转时最容易受损的部件之一。常见故障包括磨损、疲劳、过热和润滑不良&#xff0c;这些问题可能导致噪音增…...

二叉树(ACM版)

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

Scratch 之 如何制作鼠标框(2)—— 鼠标框框定角色

hello&#xff0c;大家好&#xff0c;欢迎来到鼠标框系列的第二课时&#xff01; 咱们废话不多说&#xff0c;直接开始 首先&#xff0c;温故知新一下&#xff0c;上个教程我们讨论了如何绘制鼠标框&#xff0c;网址&#xff1a;绘制鼠标框 你说&#xff0c;一个鼠标框&…...

爬虫逆向实战(九)--猿人学第十三题

一、数据接口分析 主页地址&#xff1a;猿人学第十三题 1、抓包 通过抓包可以发现数据接口是api/match/13 2、判断是否有加密参数 请求参数是否加密&#xff1f; 无请求头是否加密&#xff1f; 无响应是否加密&#xff1f; 无cookie是否加密&#xff1f; 在“cookie”模块…...

NeuralNLP-NeuralClassifier的使用记录(一),训练预测自己的【英文文本多分类】

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

Pycharm社区版连接WSL2中的Mysql8.*

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

前端传递参数时,form-data 和 json 的区别

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

FairyGUI-Unity侧菜单扩展

目录 缘由&#xff1a; 分析&#xff1a; 准备&#xff1a; 完整代码&#xff1a; 缘由&#xff1a; 在使用FairyGUI作为项目UI开发时&#xff0c;有时会使用FairyGUI提供的Scripting Define Symbols。当前FairyGUI中的Scripting Define Symbols有&#xff1a; 骨骼动画 …...

学习笔记十八:污点、容忍度

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

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&#xff0c;WLAN)是指以无线信道作为传输 媒介的计算机局域网络&#xff0c;是计算机网络与无线通信技术相结合的产物&#xff0c;它以无线多 址信道作为传输媒介&#xff0c;提供传统有线局域网的功能&#xff0c;能…...

uniapp tabbar 浏览器调试显示 真机不显示

解决方案&#xff0c;把tabBar里面的单位全改为px&#xff0c;rpx是不会显示的&#xff01; 注意了&#xff0c;改完一定要重新运行&#xff0c;不然无效&#xff0c;坑爹 "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 文件&#xff0c;在 Python 里为了对模块分类管理&#xff0c;就需要划分不同的文件夹。多个有联系的模块可以将其放到同一个文件夹下&#xff0c;为…...

docker 容器满了常用处理方法

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

DockerHub与私有镜像仓库在容器化中的应用与管理

哈喽&#xff0c;大家好&#xff0c;我是左手python&#xff01; Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库&#xff0c;用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat&#xff08;I/O Statistics&#xff09;是Linux系统下用于监视系统输入输出设备和CPU使…...

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API&#xff0c;查询的是单条数据&#xff0c;比如根据主键ID查询用户信息&#xff0c;sql如下&#xff1a; select id, name, age from user where id #{id}API默认返回的数据格式是多条的&#xff0c;如下&#xff1a; {&qu…...

Rust 异步编程

Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心

当仓库学会“思考”&#xff0c;物流的终极形态正在诞生 想象这样的场景&#xff1a; 凌晨3点&#xff0c;某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径&#xff1b;AI视觉系统在0.1秒内扫描包裹信息&#xff1b;数字孪生平台正模拟次日峰值流量压力…...

浅谈不同二分算法的查找情况

二分算法原理比较简单&#xff0c;但是实际的算法模板却有很多&#xff0c;这一切都源于二分查找问题中的复杂情况和二分算法的边界处理&#xff0c;以下是博主对一些二分算法查找的情况分析。 需要说明的是&#xff0c;以下二分算法都是基于有序序列为升序有序的情况&#xf…...

Linux nano命令的基本使用

参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时&#xff0c;显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement 1. LAB环境2. L2公告策略2.1 部署Death Star2.2 访问服务2.3 部署L2公告策略2.4 服务宣告 3. 可视化 ARP 流量3.1 部署新服务3.2 准备可视化3.3 再次请求 4. 自动IPAM4.1 IPAM Pool4.2 …...

Python 高效图像帧提取与视频编码:实战指南

Python 高效图像帧提取与视频编码:实战指南 在音视频处理领域,图像帧提取与视频编码是基础但极具挑战性的任务。Python 结合强大的第三方库(如 OpenCV、FFmpeg、PyAV),可以高效处理视频流,实现快速帧提取、压缩编码等关键功能。本文将深入介绍如何优化这些流程,提高处理…...

命令行关闭Windows防火墙

命令行关闭Windows防火墙 引言一、防火墙:被低估的"智能安检员"二、优先尝试!90%问题无需关闭防火墙方案1:程序白名单(解决软件误拦截)方案2:开放特定端口(解决网游/开发端口不通)三、命令行极速关闭方案方法一:PowerShell(推荐Win10/11)​方法二:CMD命令…...