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

K8s证书--运维之最佳选择(K8s Certificate - the best Choice for Operation and Maintenance)

K8s证书--运维之最佳选择

No

-Number-

01

一个月速通CKA

为了速通CKA,主要办了两件事情

1. 在官方的Killercoda上,练习CKA的题目。把命令敲熟悉。 // 

https://killercoda.com/killer-shell-ckad

2. 使用K3s在多台虚拟机上快速搭建了K8s集群,然后在CSDN上找了别人分享的真题来练习。

别人两天速通CKA的教程

https://segmentfault.com/a/1190000044723122

考试有两次机会,挺严格的,需要开摄像头,拿着摄像头将整个房间扫描一遍。还需要开着全局的VPN才能流畅考试。

考试过程中无法切屏,人不能离开摄像头范围,也不能发出声音,嘴巴也不能做口型。

CKA 60分就算过,不过会有分数,过了就不会有分数,只有证书。

图片

K8s的使用就是一些kubectl,大部分也就是一些yaml文件的配置。但是很多options会经常忘记,一些yaml的key-value格式也经常忘。

总之就是熟能生巧,使用K3s可以搭建集群来复习。或者直接使用Killercoda来复习。

图片

No

-Number-

02

拿着CKA没找到工作

CKA全称是Certified Kubernetes Administrator。对应的中文就是K8s管理员。

在花了一个月考取了CKA证书之后,想凭着这个证书在Boss上收获更多的面试,甚至能找到一个K8s相关的offer。

然而联系了两百个K8s相关的岗位后,投递出去约100家后,只有不到7个的K8s相关面试。当然最后,也全挂了。

K8s的岗位,要么是大厂的K8s开发(golang开发),要么是大厂和小厂的K8s运维。

这两者都不是说,你有了CKA之后,就有面试机会。而是相关经验很匹配,然后又有CKA这个加分项,面试机会才会更大。

图片

很多网站也在鼓吹CKA有多重要,多重要。甚至开始卖课了,零基础拿下CKA认证。但属实是有点贩卖焦虑了。

图片

它直接给我贴大厂K8s相关岗位的薪资,用红圈圈出,CKA优先等字体。

要不要考CKA还是要认清楚三个现状

1. 要做K8s相关的开发,需要了解Kubernetes的很多原理,并且这些原理考完CKA,在遇到面试官提问K8s问题时,你也不一定会回答出来,因为在考CKA时不需要关注这些。

2. 要做K8s相关的开发,基本只有大厂才有,要求很高。不管是K8s相关的要求,还是golang相关的要求,都不低。几百个人的公司,对此要求也不低。

3. 要做K8s相关的运维,基本只有大厂和一些非IT类的企业需要运维K8s集群才有岗位。通常这些岗位会要求有各种各样的运维经验。数据库、Linux、各种中间件。并且运维招聘的人就很少。

总的来说,如果没有相关的经验,再去应聘。只拿着CKA证书,基本没有面试。

No

-Number-

03

Operator了解吗

在考完了CKA,想拿着这个证书去市场叱咤风云,但是各种没有听过的K8s八股文直接把我问懵了

问题:kubectl创建一个pod,kubectl背后发生的通信链路是?

回答:kubectl和kube-apiserver通信,api-server负责解析yaml文件

1. kube-apiserver --- kubectl直接与apiserver交互。间接和其它组件交互

2. etcd --- 由kube-apiserver直接与etcd交互

3. kubelet --- 这是宿主机的进程,负责与容器运行时交互

4. kube-controller-manager --- 重点关注,因为没有在图片上体现出来 和kube-apiserver交互,主动watch controller,确保controller的状态和预期一致 //controller通过监听kube-apiserver的事件,delete事件、watch事件、add事件等等

5. kube-scheduler ---- 负责调度pod--- 只在master节点上有,不直接与kubelet交互 --- kube-apiserver发送new pod事件通知kube-scheduler,然后将调度策略通知给kube-apiserver

总结就是kubectl、etcd、kube-controller-manager、kube-scheduler、kubelet进程都是直接和kube-apiserver直接通信,然后这些组件之间通过kube-apiserver间接通信。

还有一个kube-proxy进程运行在每个节点上的进程。负责集群内部,节点之间的流量转发。也就是三层IP层。kube-proxy、ingress、network-policy比较容易混淆

组件

组件

kube-proxy进程

运行在每个节点上的进程。负责集群内部,节点之间的流量转发。也就是三层IP层

ingress-controller(pod来的)

用于http/https层,也就是7层。用于集群外部的流量,进入内部时,哪一些路由,应该访问哪些pod

network-policy(具体由CNI控制,CNI以Daemonset部署)

主要是针对ip去做分流,实现pod、service之间的访问控制

问题:K8s的Operator了解吗?

回答:operator指的是一种模式。允许用户自定义自己的crd,deployment等等。以及可以自定义控制pod的运行

operator主要有3个组件

1. CR custom resource // 自定义资源

2. Controller---Observe the current state, compare it to the desired state and adjust the state // Controller is just some logic // 这个controller也是以pod的形式来运行。但是会监视CR的状态

3. State --- The state just holds the information of what the desired state of the resource is and the resource is the thing that you are managing. // 具体的表现形式就是yaml

官网是直接给了一个demo。参考:https://kubernetes.io/zh-cn/docs/concepts/extend-kubernetes/operator/

1.有一个名为 SampleDB 的自定义资源,你可以将其配置到集群中。

2.一个包含 Operator 控制器部分的 Deployment,用来确保 Pod 处于运行状态。// 控制器Controller本身也是一种Pod

3.Operator 代码的容器镜像。

4.控制器代码,负责查询控制平面以找出已配置的 SampleDB 资源。

5.Operator 的核心是告诉 API 服务器,如何使现实与代码里配置的资源匹配。

- 如果添加新的 SampleDB,Operator 将设置 PersistentVolumeClaims 以提供持久化的数据库存储, 设置 StatefulSet 以运行 SampleDB,并设置 Job 来处理初始配置。

- 如果你删除它,Operator 将建立快照,然后确保 StatefulSet 和 Volume 已被删除。

6.Operator 也可以管理常规数据库的备份。对于每个 SampleDB 资源,Operator 会确定何时创建(可以连接到数据库并进行备份的)Pod。这些 Pod 将依赖于 ConfigMap 和/或具有数据库连接详细信息和凭据的 Secret。

7.由于 Operator 旨在为其管理的资源提供强大的自动化功能,因此它还需要一些额外的支持性代码。 在这个示例中,代码将检查数据库是否正运行在旧版本上, 如果是,则创建 Job 对象为你升级数据库。

问题Deployment 、StatefulSet、DaemonSet、ReplicaSet 都有啥区别?

回答:如下

组件

作用

replicaset

管理pod副本的,部署无状态应用---k8s官方也不建议直接操作replicaset。应该使用deployment,deployment功能更多

deployment

管理Pod和ReplicaSet,部署无状态应用,滚动升级等功能

statefulset

部署有状态应用---比如mysql主从集群

Daemonset

保每个node都运行某个pod。一般这种pod里面放的是一些守护进程。

No

-Number-

04

总结

考了CKA也不能直接就有offer,K8s的八股文还是不能少,做K8s开发的路更难。。。

相关文章:

  • 主键id设计
  • 华为OD机试A卷 - 积木最远距离(C++ Java JavaScript Python )
  • 文件描述符,它在哪里存的,exec()后还存在吗
  • 【STM32】对stm32F103VET6指南者原理图详解(超详细)
  • 支付页面安全与E-Skimming防护----浅谈PCI DSS v4.0.1要求6.4.3与11.6.1的实施
  • ✨分享我在飞书多维表格中使用DeepSeek的经历✨
  • STM32F103_LL库+寄存器学习笔记05 - GPIO输入模式,捕获上升沿进入中断回调
  • 飞速(FS)InfiniBand解决方案助力领先科技公司网络升级
  • kettle插件-mysql8数据库插件
  • MySQL进阶
  • 【linux复习】——进程间通信
  • 【HarmonyOS NEXT】EventHub和Emitter的使用场景与区别
  • 基于javaweb的SpringBoot雪具商城系统设计与实现(源码+文档+部署讲解)
  • UART(通用异步收发传输器)
  • 删除排序链表中的重复元素
  • CF254B Jury Size
  • 抽象的算法0.1.3.2版本
  • Flutter 完整开发指南
  • 【Qt】C++前向声明与Qt信号与槽的区别
  • 备赛蓝桥杯之第十六届模拟赛2期职业院校组第六题:菜谱教程
  • 多地警务新媒体整合:关停交警等系统账号,统一信息发布渠道
  • 美元指数上涨超1%重返101上方,创1个月新高
  • “80后”李灿已任重庆市南川区领导,此前获公示拟提名为副区长人选
  • 印控克什米尔地区再次传出爆炸声
  • 印度证实印巴已同意停火
  • 重庆大学通报本科生发14篇SCI论文:涉事学生及其父亲被处理