在 k8s 上进行部署前,首先需要了解一个基本概念 Deployment
Deployment 译名为 部署。在k8s中,通过发布 Deployment,可以创建应用程序 (docker image) 的实例 (docker container),这个实例会被包含在称为 Pod 的概念中,Pod 是 k8s 中最小可管理单元。
在 k8s 集群中发布 Deployment 后,Deployment 将指示 k8s 如何创建和更新应用程序的实例,master 节点将应用程序实例调度到集群中的具体的节点上。
创建应用程序实例后,Kubernetes Deployment Controller 会持续监控这些实例。如果运行实例的 worker 节点关机或被删除,则 Kubernetes Deployment Controller 将在群集中资源最优的另一个 worker 节点上重新创建一个新的实例。这提供了一种自我修复机制来解决机器故障或维护问题。
在容器编排之前的时代,各种安装脚本通常用于启动应用程序,但是不能够使应用程序从机器故障中恢复。通过创建应用程序实例并确保它们在集群节点中的运行实例个数,Kubernetes Deployment 提供了一种完全不同的方式来管理应用程序
Kubernetes集群是指Kubernetes协调一个高可用计算机集群,每个计算机作为独立单元互相连接工作。
一个Kubernetes集群包含两种类型的资源:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-F8vJ0EuG-1668992680517)(K8s%E9%83%A8%E7%BD%B2.assets/image-20221114105111396.png)]](https://1000bd.com/contentImg/2024/04/20/84f71800b7b603bc.png)
Deployment负责创建和更新应用程序的实例。创建Deployment后,Kubernetes Master 将应用程序实例调度到集群中的各个节点上。如果托管实例的节点关闭或被删除,Deployment控制器会将该实例替换为群集中另一个节点上的实例。这提供了一种自我修复机制来解决机器故障维护问题。
可以使用Kubernetes命令行界面Kubectl创建和管理Deployment。Kubectl使用Kubernetes API与集群进行交互。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8SLpe1SC-1668992680518)(K8s%E9%83%A8%E7%BD%B2.assets/image-20221114105148782.png)]](https://1000bd.com/contentImg/2024/04/20/e4284a7865b494b1.png)
Pod相当于逻辑主机的概念,负责托管应用实例。包括一个或多个应用程序容器(如 Docker),以及这些容器的一些共享资源(共享存储、网络、运行信息等)。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mTvgd8sn-1668992680519)(K8s%E9%83%A8%E7%BD%B2.assets/image-20221114105220641.png)]](https://1000bd.com/contentImg/2024/04/20/f654bb490c90fd93.png)
Service是一个抽象层,它定义了一组Pod的逻辑集,并为这些Pod支持外部流量暴露、负载平衡和服务发现。
尽管每个Pod 都有一个唯一的IP地址,但是如果没有Service,这些IP不会暴露在群集外部。Service允许您的应用程序接收流量。Service也可以用在ServiceSpec标记type的方式暴露,type类型如下:
: 从集群外部访问Service。是ClusterIP的超集。![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GPZNn7BN-1668992680519)(K8s%E9%83%A8%E7%BD%B2.assets/image-20221114105254137.png)]](https://1000bd.com/contentImg/2024/04/20/6f1dc3f1e84d446c.png)
服务发现和负载均衡
Kubernetes 可以通过 DNS 名称或 IP 地址暴露容器的访问方式。并且可以在同组容器内分发负载以实现负载均衡
存储编排
Kubernetes可以自动挂载指定的存储系统,例如 local stroage/nfs/云存储等
自动发布和回滚
您可以在 Kubernetes 中声明您期望应用程序容器应该达到的状态,Kubernetes将以合适的速率调整容器的实际状态,并逐步达到最终期望的结果。请参考 声明式的配置
自愈
Kubernetes提供如下自愈能力:
密钥及配置管理
Kubernetes可以存储和管理敏感信息(例如,密码、OAuth token、ssh密钥等)。您可以更新容器应用程序的密钥、配置等信息,而无需:
取一台服务器或虚拟机,执行一条命令,即可完成 Kuboard-Spray 的安装。
对这台服务器的最低要求为:
待执行的命令如下:
docker run -d \
--privileged \
--restart=unless-stopped \
--name=kuboard-spray \
-p 80:80/tcp \
-v /var/run/docker.sock:/var/run/docker.sock \
-v ~/kuboard-spray-data:/data \
eipwork/kuboard-spray:latest-amd64
# 如果抓不到这个镜像,可以尝试一下这个备用地址:
# swr.cn-east-2.myhuaweicloud.com/kuboard/kuboard-spray:latest-amd64
持久化
KuboardSpray 的信息保存在容器的 /data 路径,请将其映射到一个您认为安全的地方,上面的命令中,将其映射到了 ~/kuboard-spray-data 路径;
只要此路径的内容不受损坏,重启、升级、重新安装 Kuboard-Spray,或者将数据及 Kuboard-Spray 迁移到另外一台机器上,您都可以找回到原来的信息。
在浏览器打开地址 http://这台机器的IP,输入用户名 admin,默认密码 Kuboard123,即可登录 Kuboard-Spray 界面。
系统设置 --> 资源包管理 界面,可以看到已经等候您多时的 Kuboard-Spray 离线资源包,如下图所示:选择导入
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LQ9e1P7t-1668992680519)(K8s%E9%83%A8%E7%BD%B2.assets/image-20221110141307957.png)]](https://1000bd.com/contentImg/2024/04/20/b295443fba3d902f.png)
点击 导 入 按钮,在界面的引导下完成资源包的加载。
重要
no such file or directory 或者 permission denied 之类的错误提示,通常是因为您开启了 SELinux,导致 kuboard-spray 不能读取映射到容器 /data 的路径离线加载资源包 按钮,它可以引导您轻松完成资源包的离线加载过程。![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fwQMmL1t-1668992680520)(K8s%E9%83%A8%E7%BD%B2.assets/image-20221110141343318.png)]](https://1000bd.com/contentImg/2024/04/20/ec44c84b939d93b6.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-50h8TppG-1668992680520)(K8s%E9%83%A8%E7%BD%B2.assets/image-20221110141406043.png)]](https://1000bd.com/contentImg/2024/04/20/6bb384914b04136f.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lJzlASPx-1668992680520)(K8s%E9%83%A8%E7%BD%B2.assets/image-20221110141704477.png)]](https://1000bd.com/contentImg/2024/04/20/03f387f2a47e2a5d.png)
在 Kuboard-Spray 界面中,导航到 集群管理 界面,点击界面中的 添加集群安装计划 按钮,填写表单如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VxEalKmy-1668992680521)(K8s%E9%83%A8%E7%BD%B2.assets/image-20221110142412075.png)]](https://1000bd.com/contentImg/2024/04/20/41e24d476aadba6c.png)
添加完成之后
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0MlyWv2y-1668992680521)(K8s%E9%83%A8%E7%BD%B2.assets/image-20221110142507153.png)]](https://1000bd.com/contentImg/2024/04/20/06a552597c4bca9e.png)
注意事项
最少的节点数量是 1 个;
ETCD 节点、控制节点的总数量必须为奇数;
在 全局设置 标签页,可以设置节点的通用连接参数,例如所有的节点都使用相同的 ssh 端口、用户名、密码,则共同的参数只在此处设置即可;
在节点标签页,如果该节点的角色包含 etcd 则必须填写 ETCD 成员名称 这个字段;
如果您 KuboardSpray 所在节点不能直接访问到 Kubernetes 集群的节点,您可以设置跳板机参数,使 KuboardSpray 可以通过 ssh 访问集群节点。
集群安装过程中,除了已经导入的资源包以外,还需要使用 yum 或 apt 指令安装一些系统软件,例如 curl, rsync, ipvadm, ipset, ethtool 等,此时要用到操作系统的 apt 软件源或者 yum 软件源。全局设置 标签页中,可以引导您完成 apt / yum 软件源的设置,您可以:
如果您使用 docker 作为集群的容器引擎,还需要在全局设置
标签页指定安装 docker 用的 apt / yum 源。
如果您使用 containerd 作为容器引擎,则无需配置 docker 的 apt / yum 源,containerd 的安装包已经包含在 KuboardSpray 离线资源包中。
点击上图的 保存 按钮,再点击 执行 按钮,可以启动集群的离线安装过程,如下图所示:
选择添加节点
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6rmr75Sp-1668992680521)(K8s%E9%83%A8%E7%BD%B2.assets/image-20221110162921495.png)]](https://1000bd.com/contentImg/2024/04/20/5d4464290b057545.png)
这边输入一台什么都没有装的服务器
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xOOfHb8t-1668992680522)(K8s%E9%83%A8%E7%BD%B2.assets/image-20221110163038817.png)]](https://1000bd.com/contentImg/2024/04/20/eb96df44ff0b1a76.png)
然后点保存
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mrtlK5E1-1668992680522)(K8s%E9%83%A8%E7%BD%B2.assets/image-20221110163058576.png)]](https://1000bd.com/contentImg/2024/04/20/5b9ca1c22f034802.png)
需要注意的是:Centos的镜像需要为以下版本
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ob0eu0uj-1668992680522)(K8s%E9%83%A8%E7%BD%B2.assets/image-20221114090804823.png)]](https://1000bd.com/contentImg/2024/04/20/644e18b1335bb132.png)
分别在以下这三个节点
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-62TxtD5L-1668992680523)(K8s%E9%83%A8%E7%BD%B2.assets/image-20221114090940646.png)]](https://1000bd.com/contentImg/2024/04/20/0fcac448d3b2495b.png)
设置下这个
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-35qc5CxP-1668992680523)(K8s%E9%83%A8%E7%BD%B2.assets/image-20221114092008296.png)]](https://1000bd.com/contentImg/2024/04/20/554581b511e427e8.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B3I1lIyK-1668992680523)(K8s%E9%83%A8%E7%BD%B2.assets/image-20221114091042245.png)]](https://1000bd.com/contentImg/2024/04/20/a906e0e499a90c08.png)
出现这个界面表示你k8s已经搭建成功!!!
个人搭建项目代码地址:
https://github.com/hongjiatao/spring-boot-anyDemo
欢迎收藏点赞三连。谢谢!有问题可以留言博主会24小时内无偿回复。