K8S架构熟悉及日常操作
创始人
2024-05-21 10:56:41
0

目录

一、架构介绍

二、组件介绍

三、调度介绍

四、CLI指令介绍

五、常见CLI指令

六、常见问题排查思路


一、架构介绍

Kubernetes系统架构为客户端/服务端(C/S)架构,Master作为服务端,Node作为客户端。

Master服务端也被称为主控节点,它在集群中主要负责如下任务:

(1)集群的“大脑”,负责管理所有Node

(2)负责调度Pod在哪些节点上运行

(3)负责控制集群运行过程中的所有状态

Node客户端也被称为工作节点,它在集群中主要负责如下任务:

(1)负责管理所有容器(Container)

(2)负责监控/上报所有Pod的运行状态

二、组件介绍

Master服务端主要负责管理和控制整个Kubernetes集群,对集群做出全局性决策。

Master服务端主要包含如下组件:

(1)kube-apiserver组件:集群的HTTP REST API接口,是集群控制的入口。

(2)kube-controller-manager组件:集群中所有资源对象的自动化控制中心。

(3)kube-scheduler组件:集群中Pod资源对象的调度服务。

Node客户端是Kubernetes集群中的工作节点,Node节点上的工作由Master服务端进行分配。

Node节点主要包含如下组件:

(1)kubelet组件:负责管理节点上容器的创建、删除、启停等任务,与Master节点进行通信。(2)kube-proxy组件:负责Kubernetes服务的通信及负载均衡服务。

(3)container组件:负责容器的基础管理服务,接收kubelet组件的指令。

(4)namespace:kubernetes集群中的虚拟空间,将资源进行逻辑上的隔离。

(5)pod:Kubernetes中能够创建和部署的最小单元,是Kubernetes集群中的一个应用实例Pod中包含了一个或多个容器,还包括存储、网络等各个容器共享的资源。可简单理解为一个启动java服务,基本单独创建pod使用。

(6)deployment:最常用无状态服务资源,会自动创建replicasets,replicasets能够控制副本数量。

(7)service:service是一组逻辑pod的抽象,为一组pod提供统一入口,用户只需与service打交道,service提供DNS解析名称,负责追踪pod动态变化并更新转发表,通过负载均衡算法最终将流量转发到后端的pod。4层tcp。

(8)ingress:ingress是一个管理kubernetes集群外部到内部流量的api对象,7层http,https。(9)configmap:用来将非加密数据保存到键值对中。一般用作环境变量、命令行参数或者存储卷中的配置文件。

三、调度介绍

 

(1)创建Deployment,请求被发送至API Server,经过认证、鉴权和准入,Deployment 对象被保存至etcd。 (2)Controller Manager 中的Deployment Controller 监听API Server 中所有Deployment 的变更事件,捕获Deployment 的创建事件。 (3)Deployment Controller 会创建新的ReplicaSet。 (4)ReplicaSet Controller 将新建Pod 的请求发送至API Server,API Server将Pod保存至etcd 。 (5)调度器监听API Server 中所有nodeName 为空的Pod,经过一系列调度算法评分,将pod的nodeName属性保存至etcd。 (6)被调度节点的kubelet 监听到有归属于自己节点的新Pod 时,开始加载Pod 清单,下载Pod 所需的配置信息,并完成Pod 的启动。

四、CLI指令介绍

kubectl CLI命令行结构分别为Command、TYPE、NAME及Flag,分别介绍如下。 (1)Command:指定命令操作,例如create、get、describe、delete等。 (2)TYPE:指定资源类型,例如pod、pods、rc等。资源类型不区分大小写。 (3)NAME:指定资源名称,可指定多个,例如name1 name2。资源名称需要区分大小写。 (4)Flag:指定可选命令行参数,例如-n命令行参数用于指定不同的命名空间。

五、常见CLI指令

查看资源信息kubect get  *****
kubectl get pods -n namespace  查看pods
kubectl get deploy -n namespace  查看deployment
kubectl get service -n namespace  查看service
kubectl get ingress -n namespace
kubectl get node

查看资源属性kubectl describe *****
kubectl describe pods -n namespace pod-name
kubectl describe deploy -n namespace deploy-name
kubectl describe service -n namespace service-name
kubectl describe ingress -n namespace ingress-name

编辑资源kubect edit  *****
kubectl edit pods -n namespace pod-name
kubectl edit deploy -n namespace deploy-name
kubectl edit service -n namespace service-name
kubectl edit ingress -n namespace ingress-name

查看资源使用
kubectl top node
kubectl top pods -n namespace pod-name
kubectl describe node

重启
kubectl delete pod -n  namespace pod-name

kubectl rollout restart deploy -n namespace deployname


查看日志
kubectl logs -n cityos pod-name -c container-name -f

kubectl logs -n cityos pod-name -c container-name --tail=100

进入容器
kubectl exec -it -n cityos pod-name -c container-name --sh

设置节点不调度/调度,驱离
kubectl cordon node node-name
kubectl uncordon node node-name
kubectl drain node-name --force --ignore-daemonsets

回滚
kubectl rollout history deploy   -n namespace deploy-name
kubectl rollout history deploy -n namespace deploy-name --revision 2
kubectl rollout undo deploy -n namespace deploy-name --to-revision=2

设置服务个数

kubectl scale deployment servicename -n namespace --replicas=1

六、常见问题排查思路

node常见状态:

1)Ready:正常运行状态

2)UnReady:组件状态不正常,查看kebelet、docker等服务

3)Unknown:节点已失联,查看节点状态

pod的常见状态:

1)Running:Pod已经绑定到一个节点上了,并且已经创建了所有容器。只是有一个容器正在运行,或者在启动中。

2)Pending:Pod创建已经提交给k8s,但是因为某种原因不能顺利创建,例如集群内存不足

3)InvalidImageName: 无法解析镜像名称

4)ImagePullBackOff: 正在重试拉取

5)ErrImagePull: 通用的拉取镜像出错

上面这几种状态都可以用kubectl describe pod查看,event有详细原因

6)CrashLoopBackOff: 容器退出,容器kubelet正在将它重启

7)Unkown:由于某中原因apiserver无法获取到Pod的状态。通常是由于Master与pod所在的主机失去连接了。
8)Evicted:由于资源不足,被驱逐

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...