K8S架构熟悉及日常操作

news2024/11/14 21:53:25

目录

一、架构介绍

二、组件介绍

三、调度介绍

四、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)namespacekubernetes集群中的虚拟空间,将资源进行逻辑上的隔离。

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

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

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

(8)ingress:ingress是一个管理kubernetes集群外部到内部流量的api对象,7httphttps。(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常见状态:

1Ready:正常运行状态

2UnReady:组件状态不正常,查看kebeletdocker等服务

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

pod的常见状态:

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

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

3InvalidImageName: 无法解析镜像名称

4ImagePullBackOff: 正在重试拉取

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/187641.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

学习逆向安全的必备基础: 汇编的初步了解

什么是汇编 汇编语言是一种低级编程语言,它使用简单的助记符来表示计算机底层的机器指令。 汇编语言是直接与计算机硬件交互的,它能够控制计算机中的每一个细节。 由于汇编语言非常低级,所以编写汇编程序通常比较困难。不过,汇…

微信怎样开发小程序【公司企业小程序开发】

现在很多公司企业都有自己的小程序,没有小程序的公司企业也会寻找开发小程序的途径。那么今天就给大家简单介绍微信怎样开发小程序,希望对需要开发小程序的公司企业有帮助。 一、注册小程序账号 有一个小程序账号是必须的,小程序账号可以在…

那些外贸老鸟们都在认真使用的8个实用小工具

在我们日常的外贸工作中,有很多地方都可以用到一些实用外贸小工具去提高工作效率,突破局部限制。是否能够灵活的应用这些实用外贸小工具,是一位成熟优秀外贸业务员的衡量标准之一。第一个:知识信息整理和CRMhttps://www.notion.so…

Linux(六)基础I/O

引言 C语言进阶 文件管理 上一篇文章详细回顾了C语言方面关于文件操作的一些库函数,比如输入输出重定向fscanf、fprintf,对于文件内容以字符形式读取的fgetc、fputc,对于文件内容以字符串形式读取的fgets、fputs,对于二进制文件的…

ieee会议论文从手稿到发表

0. 前言 在创新点得到认可之后就可以准备发论文了,这个一定要早点,可以给自己设置一个明确的deadline,毕竟ddl是第一生产力。 1. 确定发什么期刊、会议 一定要符合学校的毕业要求,有一些水的学校并不认。时间看能不能赶上学校毕…

物联网智慧消防对比传统消防具有哪些优势?

随着科技的进步和城市化进程的加快,传统消防已经满足不了社会发展的需求,智慧消防应运而生,目前智慧消防已经成为消防安全管理的核心,物联网时代的到来,让智慧消防迎来了更大的发展机遇,变得更加智慧化、系…

手机网站建设怎么做?【手机网站制作】

对于很多公司企业来说,做网站建设都是优先考虑PC端的网站建设,但是某些公司企业可能对于PC端网站的需求不高,倒是更有需要做移动端网站,也就是我们常说的手机网站。那么关于手机网站建设又是怎么做的呢?本文给大家做一…

软件测试员年底总结怎么写?所有问题都帮你梳理好了!

临近年底,很多公司都有年终总结环节,核心目的发现今年的不足,进而总结经验,更好地用以指导明年的工作。当然,即使公司没有要求,对于测试岗位来说,一年一度的总结不可或缺。假如你是测试负责人&a…

<使用Python自定义生成简易二维码>——《Python项目实战》

目录 1.问题导引 2.实现步骤 (1)查找并安装第三方库qrcode (2)编写代码并嵌入内置信息 (3)使用扫码工具读取信息 后记:●由于作者水平有限,文章难免存在谬误之处,敬…

【Tkinter】终于把StringVar讲明白了

文章目录简介Label使用StringVarEntry输入简介 初学者在使用tkinter时常犯的一个错误就是 def changeText(evt):evt.text "new Text"毕竟在创建控件时,text是出现频率很高的参数,换言之,我们会默认控件中有text这个属性&#xf…

CDGA/CDGP数据治理认证班将于2/4正式开课,报名从速!

新的一年,从考证开始,为职场竞争增添更多优势! 做数据行业的话,当然推荐考个DAMA-CDGA/CDGP数据管理证书啦! DAMA是全球唯一数据管理方面权威性认证,帮助数据从业者提升数据管理能力。 DAMA认证为数据管理专…

【c语言进阶】文件操作(下)

🚀write in front🚀 📜所属专栏: c语言学习 🛰️博客主页:睿睿的博客主页 🛰️代码仓库:🎉VS2022_C语言仓库 🎡您的点赞、关注、收藏、评论,是对我…

[NOIP2008 提高组] 笨小猴

题目描述 笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大! 这种方法的具体描述如下:假设 maxn 是单词中出现次数最多的字母的…

Python 中当前时间表示方法详解

在 Python 中获取当前时间是许多与时间有关的操作的一个很好的起点。一个非常重要的用例是创建时间戳。在本教程中,你将学习如何用 datetime 模块获取、显示和格式化当前时间。我们将学习如何读取当前时间的属性,如年份、分钟或秒。为了使时间更容易阅读…

函数的求导法则——“高等数学”

今天,小雅兰的内容是函数的求导法则,上篇博客我们知道了导数的定义、导数的几何意义及可导与连续关系,这篇博客我们来仔细学习一下求导法则,下面,就让我们进入导数的世界吧 一、函数的和、差、积、商的求导法则 二、反…

Beryl Li 代表 YGG 出席 2023 年世界经济论坛会议

Yield Guild Games(YGG)联合创始人 Beryl Li 代表 YGG 参加了 2023 年 1 月 16 日至 20 日在瑞士达沃斯举行的 2023 年世界经济论坛年会 (WEF23),在全球舞台上分享区块链、通证化、数字资产监管、治理和价值创造的潜力…

C++语法复习笔记-4. C++基本容器

文章目录1.数组声明与定义数组的开闭区间差一错误左闭右开非对称区间原则数组的增删改查一维数组二维数组面向对象的动态数组-vector自动扩容增删改查2. 字符串字符串变量与常量unicode编码字符串指针表示方法指针的表示方法char[]和char* 的区别数组每个值可改指针指向的字符串…

Yann LeCun 新作!大幅超越 MAE,图像语义表示卷出新高度

文|CV酱计算机视觉中,有两种常见的从图像中进行自我监督学习的方法:基于不变性的方法和生成方法。基于不变性的预训练方法优化编码器,使其产生相似的嵌入,用于同一图像的两个或多个视图,其中图像视图通常使…

基于Java+Spring的图书管理系统详细设计和实现

博主介绍:✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

【项目精选】基于Web的机票预订系统

文章目录 1 摘 要2 系统相关技术概述2.1 Java web2.2 三大框架SSM2.3 前端框架AngularJS2.4 数据库MySQL2.5 数据库Redis2.6 开发工具Eclipse 3 需求分析3.1 系统实现目标3.2 系统功能分析3.3 系统用列图 4 系统总体设计4.1 软件架构设计4.2 总体功能模块设计4.3 数据库设计4…