k8s 日常维护命令简介

基础信息

1、查看客户端和服务器版本

如果 kubectl 客户端版本低于 k8s 服务端版本太多,使用 kubectl 管理 k8s 时可能会出现未知异常。如果升级了 k8s 版本记得也要更新下使用的 kubectl 版本。

[root@haiouc ~]# kubectl version -o=json | jq -r '{client:.clientVersion.gitVersion, server:.serverVersion.gitVersion}'
WARNING: version difference between client (1.25) and server (1.23) exceeds the supported minor version skew of +/-1
{"client": "v1.25.4","server": "v1.23.5"
}

2、查看服务器可用的 api 资源

此命令列出了 kubectl 当前连接的k8s集群中所有可用的 api 资源(不同k8s集群可能由于集群版本不一样或存在用户自定义的api和资源从而会有所差别)。每个api资源代表了集群中的一种对象类型(如Pod、Service、Deployment等),从这里可以查看支持的api资源名称、简写(如果有)、是否是命名空间级别的资源等信息。

[root@haiouc ~]# kubectl api-resources |head
NAME                              SHORTNAMES              APIVERSION                                NAMESPACED   KIND
bindings                                                  v1                                        true         Binding
componentstatuses                 cs                      v1                                        false        ComponentStatus
configmaps                        cm                      v1                                        true         ConfigMap
endpoints                         ep                      v1                                        true         Endpoints
events                            ev                      v1                                        true         Event
limitranges                       limits                  v1                                        true         LimitRange
namespaces                        ns                      v1                                        false        Namespace
nodes                             no                      v1                                        false        Node
persistentvolumeclaims            pvc                     v1                                        true         PersistentVolumeClaim

如果 api 资源有简写,那么我们在操作资源时可以使用简写来代替提高效率。例如获取 configmaps 资源时可以用 kubectl get cm 来代替。同时由于 NAMESPACED 列显示为 true ,我们知道 configmaps 是命名空间级别资源,创建 configmaps 时需要指定命名空间,同一个命名空间中名称唯一并且仅在此命名空间内可用。

3、查看资源的帮助文档

通过该命令,可以查看特定资源对象的字段、属性、标签和其他相关信息,帮助用户了解资源对象的结构和可用选项。

[root@haiouc ~]# kubectl explain pods
[root@haiouc ~]# kubectl explain cm
[root@haiouc ~]# kubectl explain pods.spec.volumes.configMap

编写资源清单文件时候非常有用。

查看资源

1、查看指定命名空间下所有 pods 资源

# kubectl get pods -n kube-system |head -n 6

2、查看拥有指定标签的 pods 资源

如果 pod 有多个标签可以继续后面增加指定多个 -l 选项(-l k1=v1 -l k2=v2)

3、查看指定 pod 容器信息

查看指定 pod 内运行的容器名称及其镜像

[root@haiouc ~]# kubectl get pods rollouts-demo-684949c49d-8mzfc -n default -o jsonpath='{range .spec.containers[*]}{.name}{"\t"}{.image}{"\n"}{end}' |column -t
rollouts-demo  argoproj/rollouts-demo:yellow

4、查看指定 node 上运行的所有 pods 列表

先查看节点列表拿到节点名称,然后筛选字段。

# [root@haiouc ~]# kubectl get nodes# [root@haiouc ~]# kubectl get pods -A --field-selector=spec.nodeName=k8s-med-worker-3
NAMESPACE         NAME                                                READY   STATUS    RESTARTS         AGE
directpv          node-server-26mk7                                   4/4     Running   8 (6d1h ago)     33d
jenkins           default-ctp5z                                       0/1     Error     0                41h
jenkins           default-drf2r                                       1/1     Running   0                70m
jenkins           default-ztghw                                       1/1     Running   0                65m
kube-system       canal-node-8ztp8                                    2/2     Running   21 (6d1h ago)    90d
kube-system       csi-cinder-nodeplugin-gwzv4                         3/3     Running   6 (6d1h ago)     33d
kube-system       kube-proxy-rbsrt                                    1/1     Running   125 (6d1h ago)   670d
kube-system  

5、查看 pod 的 uid

有时候需要到节点排查 pod 异常的时候 kubelet 日志中显示的是 uid 而不是 pod 名称,所以需要进行转换。

[root@haiouc ~]# kubectl get pod reboot-required-jtzn6  -o jsonpath='{.metadata.uid}' -n kube-system
bf516e3e-16be-4641-a7ad-a44f86b3d207

排查问题

1、查看 pod 中指定容器的日志

可以看查看 pod 中有哪些容器

# kubectl get pods kubernetes-proxy-7f99b6f49f-bfzk8 -o jsonpath='{range .spec.containers[*]}{.name}{"\t"}{.image}{"\n"}{end}' |column -t

如果不指定容器名则默认查看pod中第一个容器的日志。-c 选项指定要查看的容器名称,--tail 选项指定要输出最后多少行日志(默认从头打印所有日志),-f 选项指定保持一直监听日志输出。

# kubectl logs kubernetes-proxy-7f99b6f49f-bfzk8 -c kubernetes-proxy --tail=5 -f

2、在容器中执行命令

简单命令
# kubectl exec csi-provisioner-cfsplugin-0 -c cfs -n kube-system -- date复杂命令(需要重定向、管道)
# kubectl exec csi-provisioner-cfsplugin-0 -c cfs -n kube-system -- /bin/sh -c 'echo "hello" >/tmp/test.txt'进入到容器中交互式执行命令(这里指定进入 tcfs 容器中)
# kubectl exec csi-provisioner-cfsplugin-0 -c tcfs -it -n kube-system -- /bin/sh
/ # ls -lh /tmp/
total 0      
/ # exit

3、将文件和目录复制到容器或从容器复制文件和目录

将 kube-system 命名空间 csi-provisioner-cfsplugin-0 pod 中 cfs 容器的 test.txt 文件复制到本地主机。

# kubectl cp kube-system/csi-provisioner-cfsplugin-0:/tmp/test.txt  /root/test.txt -c cfs
# cat test.txt
hello

将本地主机中 test.txt 文件复制到 kube-system 命名空间 csi-provisioner-cfsplugin-0 pod 中 tcfs 容器。

# kubectl cp ./test.txt kube-system/csi-provisioner-cfsplugin-0:/tmp/test.txt -c tcfs
# kubectl exec csi-provisioner-cfsplugin-0 -c tcfs -n kube-system -- cat /tmp/test.txt 
hello

部署相关

1、基于清单文件创建及删除资源

# kubectl apply -f nginx.yaml 
deployment.apps/deploy-nginx-v1 created# kubectl delete -f nginx.yaml 
deployment.apps "deploy-nginx-v1" deleted

2、更新 pod 模板中的镜像

# kubectl -n test set image deployment/deploy-nginx-v1 nginx=nginx:1.21.6
deployment.apps/deploy-nginx-v1 image updated

3、更新 pod 副本数

# kubectl -n test scale deployment deploy-nginx-v1 --replicas=2
deployment.apps/deploy-nginx-v1 scaled

4、重新部署资源

# kubectl -n test rollout restart deployment/deploy-nginx-v1
deployment.apps/deploy-nginx-v1 restarted

5、对比本地清单文件应用后和线上资源的差异

对比如果将本地清单文件 apply 后,和当前线上资源的差异。
# kubectl apply -f nginx.yaml 
deployment.apps/deploy-nginx-v1 created# kubectl -n test diff -f nginx.yaml 

标签和污点

1、给节点添加及删除自定义标签

# kubectl label nodes 192.168.2.13 dylabel_node_namespace=uat
node/192.168.2.13 labeled#删除标签(标签键后面跟-号)
# kubectl label nodes 192.168.2.13 dylabel_node_namespace-
node/192.168.2.13 labeled如果要查看节点上拥有的所有标签,则使用 kubectl get nodes --show-labels 查看。

2、添加及删除污点

给节点添加名为 dylabel_node_namespace 的污点(不能容忍该污点的pod将不会调度到该节点)。
# kubectl taint nodes 192.168.2.13 dytaint_node_namespace=uat:NoSchedule
node/192.168.2.13 tainted删除污点
# kubectl taint nodes 192.168.2.13 dytaint_node_namespace-
node/192.168.2.13 tainted

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

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

相关文章

【网站项目】家庭理财系统

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

金三银四面试题(二十三):装饰器模式知多少?

什么是装饰器模式 装饰器模式(Decorator Pattern)是一种结构型设计模式,它允许动态地向对象添加新的行为,而无需修改原始对象的结构。通过将对象包装在一个或多个装饰器对象中,装饰器模式可以增强原始对象的功能。 装…

Python俄罗斯方块

文章目录 游戏实现思路1. 游戏元素的定义2. 游戏区域和状态的定义3. 游戏逻辑的实现4. 游戏界面的绘制5. 游戏事件的处理6. 游戏循环7. 完整实现代码 游戏实现思路 这个游戏的实现思路主要分为以下几个步骤: 1. 游戏元素的定义 Brick类:表示游戏中的砖…

SpringCloud学习笔记(三)Nacos配置管理与热更新、Feign远程调用替代RestTemplate

文章目录 前言6 Nacos配置管理6.1 在Nacos中添加配置文件6.2 微服务拉取配置6.3 配置热更新6.3.1 方式一:RefreshScope注解6.3.2 方式二:ConfigurationProperties注解 6.4 配置共享6.4.1 添加一个环境共享配置6.4.2 实现读取共享配置 6.5 配置共享的优先…

Agent AI智能体:未来社会的无形引领者

目录 前言1. 智能体说明1.1 定义1.2 作用1.3 类型介绍1.4 核心技术 2. 技术进步与创新2.1 机器学习的进步2.2 深度学习与神经网络2.3 强化学习2.4 转移学习与多任务学习2.5 自然语言处理(NLP)的革新2.6 知识图谱与推理 3. 行业领域应用场景3.1 游戏行业3.2 医疗健康3.3 金融服务…

【译】Celery文档1:First Steps with Celery——安装和配置Celery

https://docs.celeryq.dev/en/stable/getting-started/first-steps-with-celery.html#first-steps Celery的第一步 Celery时一个自带电池的任务队列。 本教程内容: 安装消息传输代理(broker)安装Celery并创建第一个任务(task)启动Celery工作进程(worker)并执行任务…

【Harmony3.1/4.0】笔记七-选项卡布局

概念 当页面信息较多时,为了让用户能够聚焦于当前显示的内容,需要对页面内容进行分类,提高页面空间利用率。Tabs组件可以在一个页面内快速实现视图内容的切换,一方面提升查找信息的效率,另一方面精简用户单次获取到的…

源码编译framework.jar 并成功导入android studio 开发

一、不同安卓版本对应路径 Android N/O: 7 和 8 out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar Android P/Q: 9 和 10 out/soong/.intermediates/frameworks/base/framework/android_common/combined/framework.jar Android R: 11以上 out/so…

第1章 手写WebServer

1.1 Web原理 1.1.1 Web概述 Web是指互联网上的万维网(World Wide Web),是一个由超文本、超链接和多媒体内容组成的信息空间。Web的基础技术是HTTP协议、URL、HTML、CSS和JavaScript等。Web被广泛应用于信息检索、在线购物、社交媒体、在线游…

揭秘APP收益:养机流程带来的盈利秘诀

在这个高速发展的数字时代,手机应用(APP)已成为人们日常生活中不可或缺的工具。随着移动设备的普及和网络技术的不断进步,APP市场呈现出前所未有的活力和潜力。今天,我们将深入探讨一个特殊的高效APP运营模式——通过广…

18 如何设计微服务才能防止宕机?

在上一讲里,介绍了构建一个稳健的微服务的具体法则:防备上游、做好自己、怀疑下游, 并介绍了为什么要防备上游,以及一些防备上游的具体手段。 在本讲里,咱们一起来学习,做好微服务自身的设计和代码编写的常…

大小鼠无创血压测量系统KT-104

大小鼠无创血压测量分析系统又称鼠尾动脉血压仪,是新一代测量鼠血压产品,系统包含软件、采集器、充放气装置等组成。 详情介绍: 一、工作原理: 该仪器测量工作原理与用普通人体血压计量人体动脉血压的克氏音原理类似。高敏脉搏换…

《QT实用小工具·四十八》趣味开关

1、概述 源码放在文章末尾 该项目实现了各种样式的趣味开关: 1、爱心形状的switch开关,支持手势拖动、按压效果 2、线条样式的3种开关 项目demo演示如下所示: 使用方式: 1、sapid_switch文件夹加入工程,.pro文件中…

最新版pycharm安装教程

目录 PyCharm 简介 访问 PyCharm 官网: 选择版本: 这里我们选择社区版即可 环境变量的配置 第一步 第二步 第三步 Pycharm的使用 【报错解决】 通用注意事项: PyCharm 简介 ​ PyCharm是一种Python IDE(Integrated Devel…

ABB机械臂3HAC2492-1控制柜电缆维修思路

ABB机器人控制柜是机器人运行的核心部件,而电缆则是控制柜与机器人之间的桥梁。当出现ABB工业机械手控制柜电缆故障时,会影响机器人的正常运行,甚至可能导致安全事故。ABB机械臂3HAC2492-1控制柜信号线缆维修步骤 1. 拆下控制柜电缆&#xff…

Oracle索引组织表与大对象平滑迁移至OceanBase的实施方案

作者简介:严军(花名吉远),十年以上专注于数据库存储领域,精通Oracle、Mysql、OceanBase,对大数据、分布式、高并发、高性能、高可用有丰富的经验。主导过蚂蚁集团核心系统数据库升级,数据库LDC单元化多活项目&#xff…

连锁企业如何通过OceanBase解决数据库瓶颈

本文来自OceanBase客户,重庆三十七度健康管理有限公司的技术负责人Rinvay的分享 背景 足疗养生对于大家来说应该并不陌生,自古以来便有多部古籍记载。尽管现代生活中,人们可能不再严格遵循节气进行泡脚,但在忙碌的工作间隙&#…

C语言例题31:在屏幕上显示一个菱形

题目要求&#xff1a;在屏幕上显示一个菱形 #include <stdio.h>void main() {int i, j;int x;printf("输入菱形行数(3以上的奇数&#xff09;&#xff1a;");scanf("%d", &x);//显示菱形上面的大三角形for (i 1; i < (x 1) / 2; i) {for (…

缓解程序员工作压力:保持高效创新的方法与经验分享

文章目录 每日一句正能量前言工作与休息的平衡心理健康与自我关怀社交与网络建设后记 每日一句正能量 不要抱怨你的伴侣丑&#xff0c;不要抱怨你没有一个好爸爸&#xff0c;不要抱怨你的工作差&#xff0c;不要抱怨没人赏识你。现实有太多的不如意&#xff0c;就算生活 给你的…

【ARM CoreLink 系列 4.2 -- NI-700 Function units 详细介绍】

上篇文章:【ARM CoreLink 系列 4.1 – NI-700 interconnect hub 控制器详细介绍】 文章目录 ASNI 介绍AMNI 介绍HSNI 介绍HMNI 介绍AHB请求者接口AHB镜像完成者接口PMNI 介绍PCDC 介绍Routers 介绍SERDES 介绍PMU 介绍ASNI 介绍 CoreLink NI-700的ASNI(