Linux上部署Kubectl(k8s)
1.k8s简介
1.1 Kubernetes 概念
在 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 提供了一种完全不同的方式来管理应用程序
1.1.1 Node
Kubernetes集群是指Kubernetes协调一个高可用计算机集群,每个计算机作为独立单元互相连接工作。
一个Kubernetes集群包含两种类型的资源:
- Master:负责管理整个集群。协调集群中的所有活动,例如调度应用、维护应用的所需状态、应用扩容以及推出新的更新。
- Node:用于托管正在运行的应用。可以是一个虚拟机或者物理机,它在Kubernetes集群中充当工作机器的角色,每个Node都有Kubelet,它管理Node而且是Node与Master通信的代理,Node还具有用于处理容器操作的工具,例如Docker或rkt。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-F8vJ0EuG-1668992680517)(K8s%E9%83%A8%E7%BD%B2.assets/image-20221114105111396.png)]](https://img-blog.csdnimg.cn/9da293fb2f124a348c717affecee349f.png)
1.1.2 Deployment
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://img-blog.csdnimg.cn/6a4db1385ee54ce690a12eb39ceda3c3.png)
1.1.3 Pod
Pod相当于逻辑主机的概念,负责托管应用实例。包括一个或多个应用程序容器(如 Docker),以及这些容器的一些共享资源(共享存储、网络、运行信息等)。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mTvgd8sn-1668992680519)(K8s%E9%83%A8%E7%BD%B2.assets/image-20221114105220641.png)]](https://img-blog.csdnimg.cn/950ee57a632142bf8592a01f272f5dbe.png)
1.1.4 Service
Service是一个抽象层,它定义了一组Pod的逻辑集,并为这些Pod支持外部流量暴露、负载平衡和服务发现。
尽管每个Pod 都有一个唯一的IP地址,但是如果没有Service,这些IP不会暴露在群集外部。Service允许您的应用程序接收流量。Service也可以用在ServiceSpec标记type的方式暴露,type类型如下:
- ClusterIP(默认):在集群的内部IP上公开Service。这种类型使得Service只能从集群内访问。
- NodePort:使用NAT在集群中每个选定Node的相同端口上公开Service。使用
<NodeIP>:<NodePort>从集群外部访问Service。是ClusterIP的超集。 - LoadBalancer:在当前云中创建一个外部负载均衡器(如果支持的话),并为Service分配一个固定的外部IP。是NodePort的超集。
- ExternalName:通过返回带有该名称的CNAME记录,使用任意名称(由spec中的externalName指定)公开Service。不使用代理。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GPZNn7BN-1668992680519)(K8s%E9%83%A8%E7%BD%B2.assets/image-20221114105254137.png)]](https://img-blog.csdnimg.cn/4839d58a67714d13897355efb4e02c0a.png)
1.2 Kubernetes 功能
-
服务发现和负载均衡
Kubernetes 可以通过 DNS 名称或 IP 地址暴露容器的访问方式。并且可以在同组容器内分发负载以实现负载均衡
-
存储编排
Kubernetes可以自动挂载指定的存储系统,例如 local stroage/nfs/云存储等
-
自动发布和回滚
您可以在 Kubernetes 中声明您期望应用程序容器应该达到的状态,Kubernetes将以合适的速率调整容器的实际状态,并逐步达到最终期望的结果。请参考 声明式的配置
-
自愈
Kubernetes提供如下自愈能力:
- 重启已经停机的容器
- 替换、kill 那些不满足自定义健康检查条件的容器
- 在容器就绪之前,避免调用者发现该容器
-
密钥及配置管理
Kubernetes可以存储和管理敏感信息(例如,密码、OAuth token、ssh密钥等)。您可以更新容器应用程序的密钥、配置等信息,而无需:
- 重新构建容器的镜像
- 在不合适的地方暴露密码信息
2.安装 Kuboard-Spray(192.168.1.219)
-
取一台服务器或虚拟机,执行一条命令,即可完成 Kuboard-Spray 的安装。
对这台服务器的最低要求为:
- 1核2G
- 不少于 10G 磁盘空余空间
- 已经安装好 docker
待执行的命令如下:
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 界面。
3.加载离线资源包
- 在 Kuboard-Spray 界面中,导航到
系统设置-->资源包管理界面,可以看到已经等候您多时的Kuboard-Spray 离线资源包,如下图所示:
选择导入
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LQ9e1P7t-1668992680519)(K8s%E9%83%A8%E7%BD%B2.assets/image-20221110141307957.png)]](https://img-blog.csdnimg.cn/66d0022f2dbb44809dc964932ac24b4f.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://img-blog.csdnimg.cn/ab6637d2fd434b00aa6d7e3ce15096df.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-50h8TppG-1668992680520)(K8s%E9%83%A8%E7%BD%B2.assets/image-20221110141406043.png)]](https://img-blog.csdnimg.cn/a50ceff1985949989b230ea557e36ca6.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lJzlASPx-1668992680520)(K8s%E9%83%A8%E7%BD%B2.assets/image-20221110141704477.png)]](https://img-blog.csdnimg.cn/4b66f65b46884fb2b58694d6c7646027.png)
4.规划并安装集群
在 Kuboard-Spray 界面中,导航到 集群管理 界面,点击界面中的 添加集群安装计划 按钮,填写表单如下:
- 集群名称: 自定义名称,本文中填写为 kuboard123,此名称不可以修改;
- 资源包:选择前面步骤中导入的离线资源包。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VxEalKmy-1668992680521)(K8s%E9%83%A8%E7%BD%B2.assets/image-20221110142412075.png)]](https://img-blog.csdnimg.cn/3633bfa7923b42868427ffa73aa7efba.png)
添加完成之后
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0MlyWv2y-1668992680521)(K8s%E9%83%A8%E7%BD%B2.assets/image-20221110142507153.png)]](https://img-blog.csdnimg.cn/54e46a199bb34b388ac277236605bc45.png)
注意事项
-
最少的节点数量是 1 个;
-
ETCD 节点、控制节点的总数量必须为奇数;
-
在
全局设置标签页,可以设置节点的通用连接参数,例如所有的节点都使用相同的 ssh 端口、用户名、密码,则共同的参数只在此处设置即可; -
在节点标签页,如果该节点的角色包含
etcd则必须填写ETCD 成员名称这个字段; -
如果您 KuboardSpray 所在节点不能直接访问到 Kubernetes 集群的节点,您可以设置跳板机参数,使 KuboardSpray 可以通过 ssh 访问集群节点。
-
集群安装过程中,除了已经导入的资源包以外,还需要使用 yum 或 apt 指令安装一些系统软件,例如 curl, rsync, ipvadm, ipset, ethtool 等,此时要用到操作系统的 apt 软件源或者 yum 软件源。
全局设置标签页中,可以引导您完成 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://img-blog.csdnimg.cn/6d534a99225d4982a460f8c40939cd89.png)
这边输入一台什么都没有装的服务器
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xOOfHb8t-1668992680522)(K8s%E9%83%A8%E7%BD%B2.assets/image-20221110163038817.png)]](https://img-blog.csdnimg.cn/88111adec0f44e16bffbbc594eb502f0.png)
然后点保存
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mrtlK5E1-1668992680522)(K8s%E9%83%A8%E7%BD%B2.assets/image-20221110163058576.png)]](https://img-blog.csdnimg.cn/5d298dd5e2ca4090b6627ff617670f20.png)
需要注意的是:Centos的镜像需要为以下版本
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ob0eu0uj-1668992680522)(K8s%E9%83%A8%E7%BD%B2.assets/image-20221114090804823.png)]](https://img-blog.csdnimg.cn/7b7a97f19b7f45c9a2661415b92c15ab.png)
分别在以下这三个节点
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-62TxtD5L-1668992680523)(K8s%E9%83%A8%E7%BD%B2.assets/image-20221114090940646.png)]](https://img-blog.csdnimg.cn/dbe49bca374f4e9ebf59d3bccd2aa3a2.png)
设置下这个
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-35qc5CxP-1668992680523)(K8s%E9%83%A8%E7%BD%B2.assets/image-20221114092008296.png)]](https://img-blog.csdnimg.cn/bd3b949842114c06afb0abc5adfacee7.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B3I1lIyK-1668992680523)(K8s%E9%83%A8%E7%BD%B2.assets/image-20221114091042245.png)]](https://img-blog.csdnimg.cn/11f0a838e92e46be948d809162db5484.png)
出现这个界面表示你k8s已经搭建成功!!!
个人搭建项目代码地址:
https://github.com/hongjiatao/spring-boot-anyDemo
欢迎收藏点赞三连。谢谢!有问题可以留言博主会24小时内无偿回复。

![[附源码]java毕业设计网上书店的设计](https://img-blog.csdnimg.cn/2bc73315061b47ffb4c8ff3cb2a5a3db.png)

















![[附源码]java毕业设计-线上摄影平台系统](https://img-blog.csdnimg.cn/2390c641332849888d11cf7ec15c3f46.png)