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.mfbz.cn/a/586263.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

chrome和drive安装包路径

Chrome for Testing availability (googlechromelabs.github.io) 下载Stable下面的包哈

【Leetcode每日一题】 分治 - 排序数组(难度⭐⭐)(69)

1. 题目解析 题目链接:912. 排序数组 这个问题的理解其实相当简单,只需看一下示例,基本就能明白其含义了。 2.算法原理 归并排序(Merge Sort)是一种采用“分而治之”(Divide and Conquer)策略…

LLM之RAG实战(三十八)| RAG分块策略之语义分块

在RAG应用中,分块是非常重要的一个环节,常见的分块方法有如下几种: Fixed size chunkingRecursive ChunkingDocument Specific ChunkingSemantic Chunking a)Fixed size chunking:这是最常见、最直接的分块方法。我们…

C/C++基础语法练习 - 计算阶乘(新手推荐阅读✨)

题目链接:https://www.starrycoding.com/problem/160 题目描述 给定一个整数 n n n,输出阶乘 n ! n! n!。 输入格式 一个整数 n ( 1 ≤ n ≤ 20 ) n(1 \le n \le 20) n(1≤n≤20)。 输出格式 一个整数 n ! n! n!。 输入样例1 16输出样例1 20922…

树的中心 树形dp

#include<bits/stdc.h> using namespace std; int n; const int N 100005; // 无向边 int ne[N * 2], e[N * 2], idx; int h[N]; int vis[N];int ans 0x7fffffff;void add(int a, int b) {e[idx] b, ne[idx] h[a], h[a] idx; }int dfs(int u) { // 作为根节点vis[u]…

机器学习:基于Sklearn,使用随机森林分类器RandomForestClassifier检测信用卡欺诈

前言 系列专栏&#xff1a;机器学习&#xff1a;高级应用与实践【项目实战100】【2024】✨︎ 在本专栏中不仅包含一些适合初学者的最新机器学习项目&#xff0c;每个项目都处理一组不同的问题&#xff0c;包括监督和无监督学习、分类、回归和聚类&#xff0c;而且涉及创建深度学…

分享一份物联网 SAAS 平台架构设计

一、架构图**** 二、Nginx**** 用于做服务的反向代理。 三、网关**** PaaS平台所有服务统一入口&#xff0c;包含token鉴权功能。 四、开放平台**** 对第三方平台开放的服务入口。 五、MQTT**** MQTT用于设备消息通信、内部服务消息通信。 六、Netty**** Socket通信设…

IoTDB 入门教程①——时序数据库为什么选IoTDB ?

文章目录 一、前文二、性能排行第一三、完全开源四、数据文件TsFile五、乱序数据高写入六、其他七、参考 一、前文 IoTDB入门教程——导读 关注博主的同学都知道&#xff0c;博主在物联网领域深耕多年。 时序数据库&#xff0c;博主已经用过很多&#xff0c;从最早的InfluxDB&a…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-9.1-LED灯(模仿STM32驱动开发实验)

前言&#xff1a; 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM&#xff08;MX6U&#xff09;裸机篇”视频的学习笔记&#xff0c;在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

IDEA:Server‘s certificate is not trusted(服务器的证书不受信任)

IDEA&#xff1a;Server‘s certificate is not trusted&#xff08;服务器的证书不受信任&#xff09; 打开idea&#xff0c;发现一个莫名其妙的证书弹出来&#xff0c;还关不掉发现组织名是 Doctorcom LTD.百度了下 不知道是什么东西 这也不是下面这种破解了idea的情况 30069…

Ajax.

目录 1. 服务器相关的基础概念 1.1 服务器 1.2 客户端 1.3 服务器对外提供的资源 1.4 数据也是资源 1.5 资源与 URL 地址 1.6 什么是 Ajax 2. Ajax 的基础用法 2.1 POST 请求 2.2 GET 请求 2.3 DELETE 请求 2.4 PUT 请求 2.5 PATCH 请求 3. axios 3.1 axios 的基…

IoTDB 入门教程 问题篇①——内存不足导致datanode服务无法启动

文章目录 一、前文二、问题三、分析四、继续分析五、解决问题 一、前文 IoTDB入门教程——导读 二、问题 执行启动命令&#xff0c;但是datanode服务却无法启动&#xff0c;查询不到6667端口 bash sbin/start-standalone.sh 进而导致数据库连接也同样失败 [rootiZ2ze30dygwd6…

Go 语言(三)【面向对象编程】

1、OOP 首先&#xff0c;Go 语言并不是面向对象的语言&#xff0c;只是可以通过一些方法来模拟面向对象。 1.1、封装 Go 语言是通过结构体&#xff08;struct&#xff09;来实现封装的。 1.2、继承 继承主要由下面这三种方式实现&#xff1a; 1.2.1、嵌套匿名字段 //Add…

实操——使用uploadify插件(php版和Java版) 与 Dropzone.js插件分别实现附件上传

实操——使用uploadify插件&#xff08;php版和Java版&#xff09;与 Dropzone.js插件分别实现附件上传 1. 使用uploadify插件上传1.1 简介1.1.1 简介1.1.2 参考GitHub 1.2 后端PHP版本的uploadify1.2.1 下载项目的目录结构1.2.2 测试看界面效果1.2.3 附页面代码 和 PHP代码 1.…

ctfshow——SQL注入

文章目录 SQL注入基本流程普通SQL注入布尔盲注时间盲注报错注入——extractvalue()报错注入——updataxml()Sqlmap的用法 web 171——正常联合查询web 172——查看源代码、联合查询web 173——查看源代码、联合查询web 174——布尔盲注web 176web 177——过滤空格web 178——过…

LLM 构建Data Multi-Agents 赋能数据分析平台的实践之③:数据分析之二(大小模型协同)

一、概述 随着新一代信息技术在产业数字化中的应用&#xff0c;产生了大量多源多模态信息以及响应的信息处理模式&#xff0c;数据孤岛、模型林立的问题也随之产生&#xff0c;使得业务系统臃肿、信息处理和决策效率低下&#xff0c;面对复杂任务及应用场景问题求解效率低。针…

【iOS】消息流程分析

文章目录 前言动态类型动态绑定动态语言消息发送objc_msgSendSEL&#xff08;selector&#xff09;IMP&#xff08;implementation&#xff09;IMP高级用法 MethodSEL、IMP、Method总结流程概述 快速查找消息发送快速查找的总结buckets 慢速查找动态方法解析resolveInstanceMet…

如何远程访问服务器?

在现代信息技术的快速发展下&#xff0c;远程访问服务器已成为越来越多用户的需求。远程访问服务器能够让用户随时随地通过网络连接服务器&#xff0c;实现数据的传输和操作。本文将介绍远程访问服务器的概念&#xff0c;以及一种广泛应用于不同行业的远程访问解决方案——【天…

软考之零碎片段记录(二十九)+复习巩固(十七、十八)

学习 1. 后缀式&#xff08;逆波兰式&#xff09; 2. c/c语言编译 类型检查是语义分析 词法分析。分析单词。如单词的字符拼写等语法分析。分析句子。如标点符号、括号位置等语言上的错误语义分析。分析运算符、运算对象类型是否合法 3. java语言特质 即时编译堆空间分配j…

2024抖音AI图文带货班:在这个赛道上 乘风破浪 拿到好效果

课程目录 1-1.1 AI图文学习指南 1.mp4 2-1.2 图文带货的新机会 1.mp4 3-1.3 2024年优质图文新标准 1.mp4 4-1.4 图文如何避免违规 1.mp4 5-1.5 优质图文模板解析 1.mp4 6-2.1 老号重启 快速破局 1.mp4 7-2.2 新号起号 不走弯路 1.mp4 8-2.3 找准对标 弯道超车 1.mp4 9…