当前位置: 首页 > 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 

烂尾

http://www.lryc.cn/news/127144.html

相关文章:

  • 电机故障诊断(python程序,模型为MSCNN结合LSTM结合注意力机制模型,有注释)
  • 二叉树(ACM版)
  • Scratch 之 如何制作鼠标框(2)—— 鼠标框框定角色
  • 爬虫逆向实战(九)--猿人学第十三题
  • NeuralNLP-NeuralClassifier的使用记录(一),训练预测自己的【英文文本多分类】
  • Pycharm社区版连接WSL2中的Mysql8.*
  • 前端传递参数时,form-data 和 json 的区别
  • FairyGUI-Unity侧菜单扩展
  • 学习笔记十八:污点、容忍度
  • amis百度前端框架,在js中使用amis写json转页面
  • openEuler安装jdk、openEuler离线安装jdk、openEuler设置jdk、openEuler在线安装
  • Photoshop制作漂亮光泽感3D按钮
  • 【网络爬虫】模拟登录与代理
  • 无线局域网基础知识与架构
  • uniapp tabbar 浏览器调试显示 真机不显示
  • 极智AI | 地平线BPU跑通YOLOv5
  • 循环服务器(同时连接多个客户端,为每个客户端创建一个子进程处理其消息)
  • 【从零学习python 】38.Python包的使用及导入方式
  • docker 容器满了常用处理方法
  • 28、springboot的静态模版(前端页面)重加载和 devtools开发者工具
  • [FPGA IP系列] FPGA常用存储资源大全(RAM、ROM、CAM、SRAM、DRAM、FLASH)
  • Spark SQL优化:NOT IN子查询优化解决
  • 代码审计-java项目-组件漏洞审计
  • 接口测试的测试用例该怎么写呢
  • C语言例题讲解(if语句,循环语句,函数)
  • 深入探索JavaEE单体架构、微服务架构与云原生架构
  • 【STM32】FreeRTOS互斥量学习
  • Docker容器基础
  • Ajax及前端工程化
  • electron的使用和操作