zl程序教程

您现在的位置是:首页 >  其他

当前栏目

【K8S】Kubernetes常用命令

2023-04-18 16:57:32 时间

文章目录

Kubernetes常用命令

资源管理办法

陈述式资源管理方法

查看版本信息

kubectl version

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eDlhQu3O-1667632680024)(F:	yporasejpg1103.png)]

查看资源对象简写

kubectl api-resources

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xrTkwBWj-1667632680025)(F:	yporasejpg1104.png)]

查看集群信息

kubectl cluster-info

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-89AhiEVm-1667632680025)(F:	yporasejpg1105.png)]

配置kubectl自动补全

source <(kubectl completion bash)

注意:此时命令补全功能切换环境后是不生效的,如果要使切换环境后也生效需要配置全局环境变量

vim /etc/bashrc
.....
source <(kubectl completion bash)         #在底部添加

source /etc/bashrc

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mZs92id0-1667632680025)(F:	yporasejpg1106.png)]

node节点查看日志

journalctl -u kubelet -f
 
或者直接查看日志
 
cat /var/log/messages

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eel8dr8Z-1667632680026)(F:	yporasejpg1107.png)]

K8S核心组件日志怎么看

kubeadm部署的 kubectl logs -f pod 组件名 -n kube-system 或者journalctl -u kubelet -f

二进制部署的   journalctl -u kubelet -f   #对应节点

基本信息查看

kubectl get <resource> [-o wide | json | yaml] [-n namespace]
  • 获取资源的相关信息, -n指定命令空间, -o指定输出格式
  • resource可以是具体资源名称,如pod nginx -xxx;也可以是资源类型,如pod; 或者all (仅展示几种核心资源,并不完整)
  • –all-namespaces 或-A :表示显示所有命令空间
  • –show-labels :显示所有标签
  • -l app:仅显示标签为app的资源
  • -l app=nginx :仅显示包含app标签, 且值为nginx的资源

查看master 节点状态

kubectl get componentstatuses
kubectl get cs

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-j1aIrno1-1667632680026)(F:	yporasejpg1108.png)]

查看命令空间

命令空间的作用:用于允许不同 命令空间的相同类型的资源重名

kubectl get namespace
kubectl get ns

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dwvWG2Ut-1667632680026)(F:	yporasejpg1109.png)]

查看default命令空间的所有资源

kubectl get all [-n default]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GrYyx9y7-1667632680026)(F:	yporasejpg1110.png)]

create 创建命名空间

kubectl create ns yan
kubectl get ns

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nEJsAMbz-1667632680026)(F:	yporasejpg1111.png)]

delete 删除命名空间

kubectl delete ns yan
kubectl get ns

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tYFdMGWx-1667632680027)(F:	yporasejpg1112.png)]

在命名空间创建无状态控制器启动Pod

例:在命名空间kube-public 创建副本控制器( deployment) 来启动Pod (nginx-yun)

kubectl create deployment nginx-yun --image=nginx -n kube-public

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-j4TagPun-1667632680027)(F:	yporasejpg1113.png)]

描述某个资源的详细信息

kubectl get pods -n kube-public

kubectl describe deployment nginx-yun -n kube-public
        
kubectl describe pod nginx-yun-546d5454d7-vvlm8 -n kube-public

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uRhxlx8I-1667632680027)(F:	yporasejpg1114.png)]

查看命名空间kube-public中的pod信息

kubectl get pods -n kube-public

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iYcE6dwG-1667632680027)(F:	yporasejpg1115.png)]

kubectl exec 登录容器

kubectl exec可以跨主机登录容器,docker exec 只能在容器所在主机上登录

kubectl exec -it nginx-yun-546d5454d7-vvlm8 bash -n kube-public

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IlgCLLaP-1667632680027)(F:	yporasejpg1116.png)]

重启(删除)pod资源

由于存在deployment/rc之类的副本控制器,删除pod也会重新拉起来

kubectl delete pod nginx-yun-546d5454d7-vvlm8 -n kube-public

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BuNJNbNF-1667632680028)(F:	yporasejpg1117.png)]

若pod无法删除,总是处于terminate状态, 则要强行删除pod

kubectl delete pod <pod-name> -n <namespace> --force --grace-period=0
 
#grace-period表示过渡存活期,默认30s,在删除pod之前允许POD慢慢终止其上的容器进程,
从而优雅退出,0表示立即终止pod

扩容缩容

语法 : 命令字 操作指令 主控制器 pod—name 副本集数量 -n 名称空间
kubectl scale deployment nginx-yun --replicas=3 -n kube-public  #调整副本集
kubectl scale deployment nginx-yun --replicas=1 -n kube-public  #缩容

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FTTJoX9K-1667632680028)(F:	yporasejpg1118.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hYzi9qX1-1667632680028)(F:	yporasejpg1119.png)]

定义自动扩容,缩容规则

kubectl autoscale rc foo --max5 --cpu-precent=80

使用foo设定,使其pod的数量介于1和5之前,CPU使用率维持在80%

  • 定义最大最小pod数量
  • 定义扩容条件 往往和pod使用的基础资源百分比相关,比如使用到cpu资源到80%的时候触发扩容。百分之八十指的不是node节点的百分之八十,而是pod内limit上线的百分之八十

删除副本控制器

##首先,怎么查控制器?

kubectl get all -A |grep nginx

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hoYjzhvl-1667632680028)(F:	yporasejpg1120.png)]

kubectl delete deployment nginx-yun -n kube-public 或者
kubectl delete deployment/nginx-yun -n kube-public

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-siR3pfdN-1667632680028)(F:	yporasejpg1121.png)]

项目的生命周期

pod"生命周期的操作过程":创建–>发布–>更新–>回滚–>删除

pod生命周期:指的是pod在从创建到删除过程中,所包含、经历过的状态(running error ImagepullbackOFF)

kubectl run——创建命令

  • 创建并运行一个或多个容器镜像
  • 创建一个 deployment 或 job 来管理容器
  • kubectl run --help
##启动 nginx 实例,暴露容器端口80,设置副本数 3
kubectl create deployment nginx --image=nginx:1.15 --replicas=3 --port=80

kubectl get pods

kubectl get all

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ak83IRyU-1667632680029)(F:	yporasejpg1122.png)]

kubectl expose——发布命令

将资源暴露为新的Service

kubectl expose --help

为deployment(无状态部署)的nginx创建service, 并通过Service的80端口转发至容器的80端口上,Service的名称为nginx-service, 类型为NodePort

kubectl expose deployment nginx --port=80 --target-port=80 --name=nginx-service --type=NodePort

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BGMrEro2-1667632680029)(F:	yporasejpg1123.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p6wWx7Tw-1667632680029)(F:	yporasejpg1124.png)]

 Kubernetes之所以需要Service, 一方面是因为Pod的IP 不是固定的(Pod可能会重建),另一方面则是因为一组Pod实例之间总会有负载均衡的需求。
Service通过label Selector实现的对一组的Pod的访问。
对于容器应用而言,Kubernetes 提供了基于VIP (虚拟IP)的网桥的方式访问 Service, 再由Service 重定向到相应的Pod。
service的类型:
 
1、ClusterIP:提供一个集群内部的虚拟IP以供Pod访问( service默认类型
 ps:主要用于k8s内部通讯
 
2、NodePort:在每个Node.上打开一个端口以供外部访问,Kubernetes将会在每个Node.上打开一个端口并且每个Node的端口都是一样的,通过NodeIp:NodePort的方式Kubernetes集群外部的程序可以访问Service。
 ps:每个端口只能是一种服务,端口范围只能是30000-32767
 端口不够用做联邦
 
3、LoadBalancer:通过外部的负载均衡器来访问,通常在云平台部署LoadBalancer还需要额外的费用。

4、externalName:将service名称映射到一个DNS域名上,相当于DNS服务的CNAME记录,用于让pod去访问集群外部的资源,它本身没有绑定任何的资源

pod两种类型

  • 自主式(没有控制性)
  • 申明式(有控制器管理的pod,创建时就是申明式)

查看pod网络状态详细信息和Service暴露的端口

kubectl get pods,svc -o wide 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PTuwdX3C-1667632680029)(F:	yporasejpg1125.png)]

查看关联后端的节点

kubectl get endpoints

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AicKFECj-1667632680030)(F:	yporasejpg1126.png)]

查看service 的描述信息

kubectl describe svc nginx-service

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P4FtbujZ-1667632680030)(F:	yporasejpg1127.png)]

kubectl set——更新命令

更改现有应用资源一些信息
查看帮助信息--help
kubectl set --help

获取修改模板

kubectl set image --help

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UfKBRpTA-1667632680030)(F:	yporasejpg1128.png)]

查看当前nginx的版本号

curl -I http://192.168.116.140:30577

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GUNZ2HUS-1667632680030)(F:	yporasejpg1129.png)]

将nginx 版本更新为1.21版本

kubectl set image deployment/nginx nginx=nginx:1.21

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-O8v1pDLI-1667632680030)(F:	yporasejpg1130.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gKBml4o1-1667632680031)(F:	yporasejpg1131.png)]

kubectl rollout——回滚命令

对资源进行回滚管理

kubectl rollout --help

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-srSXSd60-1667632680031)(F:	yporasejpg1132.png)]

查看历史版本

kubectl rollout history deployment/nginx

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-spK72FUN-1667632680031)(F:	yporasejpg1133.png)]

执行回滚到上一个版本

kubectl rollout undo deployment/nginx

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yUvPbt8a-1667632680031)(F:	yporasejpg1134.png)]

执行回滚到指定版本

kubectl rollout undo deployment/nginx --to-revision=2
 
-revision=2:指定的是上方history里面的第几个

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Pmxs8izK-1667632680031)(F:	yporasejpg1135.png)]

检查回滚状态

kubectl rollout status deployment/nginx

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BhnX6CoQ-1667632680031)(F:	yporasejpg1136.png)]

kubectl delete——删除命令

删除副本控制器

kubectl delete deployment/nginx

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s1VtEsuQ-1667632680032)(F:	yporasejpg1137.png)]

删除service

kubectl delete svc/nginx-service

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sukqCsdy-1667632680032)(F:	yporasejpg1138.png)]

金丝雀发布(Canary Release)

Deployment控制器支持自定义控制更新过程中的滚动节奏,如“暂停(pause)”或“继续(resume)”更新操作。比如等待第一批新的Pod资源创建完成后立即暂停更新过程,此时,仅存在一部分新版本的应用,主体部分还是旧的版本。然后,再筛选一小部分的用户请求路由到新版本的Pod应用,继续观察能否稳定地按期望的方式运行。确定没问题之后再继续完成余下的Pod资源滚动更新,否则立即回滚更新操作。这就是所谓的金丝雀发布

更新deployment的版本,并配置暂停deployment

kubectl set image deployment/nginx nginx=nginx:1.21 && kubectl rollout pause deployment/nginx

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RoKpi3ip-1667632680032)(F:	yporasejpg1139.png)]

kubectl rollout status deployment/nginx
#观察更新状态

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9xCgo5To-1667632680032)(F:	yporasejpg1140.png)]

监控更新的过程,可以看到已经新增了一个资源,但是并未按照预期的状态去删除一个旧的资源, 就是因为使用了pause暂停命令

kubectl get pods -o wide

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Cq6f6eMZ-1667632680032)(F:	yporasejpg1141.png)]

确保更新的pod没问题了,继续更新

kubectl rollout resume deployment/nginx

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TBNOGa0D-1667632680033)(F:	yporasejpg1142.png)]

查看最后的更新情况

kubectl get pods -W

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vaXFd3Re-1667632680033)(F:	yporasejpg1143.png)]

声明式管理方法:YAML文件

  • 适合于对资源的修改操作
  • 声明式资源管理方法依赖于资源配置清单文件对资源进行管理
  • 资源配置清单文件有两种格式: yaml(人性化,易读),json(易于api接口解析)
  • 对资源的管理,是通过事先定义在统一资源配置清单内,再通过陈述式命令应用到k8s集群里
  • 语法格式: kubectl create/apply/delete -f xxxx. yaml

yaml 文件简介

YAML,即 YAML Ain’t a Markup Language(YAML 不是一种标记语言)的递归缩写。YAML 其实意思是 Yet Another Markup Language(仍是一种标记语言)。它主要强度这种语言是以数据为中心,而不是以标记为中心,而像 XML 语言就使用了大量的标记。

YAML 可读性高,易于理解,用来表达数据序列化的格式。它的语法和其他高级语言类似,还可以简单表达数组、散列表,标量等数据形态。它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件。

YAML 配置文件后缀为.yml,例如application.yml

yaml 和 json 的主要区别:

  • YAML 使用空格缩进,这是 Python 开发人员熟悉的领域。
  • JavaScript 开发人员喜欢 JSON,因为它是 JavaScript 的一个子集,可以直接在 JavaScript 中解释和编写,同时使用简写方式声明 JSON,在使用没有空格的典型变量名时,不需要键中的双引号
  • 有很多解析器在 YAML 和 JSON 的所有语言中都能很好地工作
  • 在许多情况下,YAML 的空白格式可以更容易查看,因为格式化需要更人性化的方法
  • 如果您的编辑器中没有空格可见或缩进线指示符,那么 YAML 的空白虽然更紧凑,更容易查看,但可能难以手动编辑
  • JSON 的序列化和反序列化要快得多,因为要检查的功能明显少于 YAML,这使得更小更轻的代码能够处理 JSON
  • 一个常见的误解是 YAML 需要较少的标点符号并且比 JSON 更紧凑,但这完全是错误的。空格是不可见的,所以看起来字符较少,但是如果你计算实际的空格是必要的,以便正确解释 YAML 以及正确的缩进,你会发现 YAML 实际上需要比 JSON 更多的字符。JSON 不使用空格来表示层次结构或分组,并且可以通过删除不必要的空格来轻松展平,以实现更紧凑的传输

YAML语法格式

  • Kubernetes支持YAML 和JSON 格式管理资源对象
  • JSON格式:主要用于api 接口之间消息的传递
  • YAML格式:用于配置和管理,YAML的配置参数格式比较清晰

语法格式:

大小写敏感
 
以空格的方式缩进标识层级关系
 
 
 
通常开头缩进两个空格(统一层级对应即可)
不支持制表符“tab”缩进,只使用空格缩进
关键词字符后缩进一个空格,比如冒号,逗号后面需要缩进一个字符
“---”表示YAML格式,一个文件的开始
 
支持以“#”表示注释

yaml文件组成部分

  • 控制器定义
  • 被控制对象

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ebeAAUpt-1667632680033)(F:	yporasejpg1144.png)]

字段说明:

apiVersionAPI版本
kind资源类型
metadata资源元数据
spec资源规格
replicas副本数量
selector标签选择器
templatepod模板
metadatapod元数据
specpod规格
container容器配置

查看api资源版本标签

K8S—apiVersion对照表:

https://blog.csdn.net/weixin_36455036/article/details/104873928?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2defaultCTRLISTdefault-2.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2defaultCTRLISTdefault-2.no_search_link

kubectl api-versions

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gZ8s81ZT-1667632680033)(F:	yporasejpg1145.png)]

如果是业务场景,一般首选使用 apps/v1(apps/v1 从 v1.9 版本开始提供 API)。
 
在 k8s v1.16 版本之前使用的是 extensions/v1beta1,extensions/v1beta1 从 v1.20 版本开始不再提供 Ingress 资源。
 
带有 beta 字样的代表的是测试版本,不用在生产环境中。

编写 nginx-deployment.yaml 资源配置清单

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jTXsO9iH-1667632680033)(F:	yporasejpg1146.png)]

mkdir /opt/demo
cd /opt/demo/
 
参考模板:
vim nginx-deployment.yaml
apiVersion: apps/v1   #指定api版本标签
kind: Deployment      #定义资源的类型/角色,deployment 为副本控制器,
此处资源类型可以是Deployment、Job、 Ingress、 Service等
metadata:             #定义资源的元数据信息,比如资源的名称、namespace、标签等信息
  name: nginx-deployment   #定义资源的名称,在同一个namespace空间中必须是唯一的
  labels:             #定义资源标签(Pod的标签)
    app: nginx
spec:              #定义deployment资源需要的参数属性,诸如是否在容器失败时重新启动容器的属性
 replicas: 3       #定义副本数量
 selector :        #定义标签选择器
  matchLabels:     #定义匹配标签
    app: nginx     #匹配上面的标签,需与上面的标签定义的app保持一致
 template:         #定义业务模板,如果有多个副本,所有副本的属性会按照模板的相关配置进行匹配
  metadata:
    labels:
      app: nginx
  spec:
   containers:            #定义容器属性
   - name: nginx          #定义一个容器名,一个- name: 定义一个容器
    image: nginx:1.15.4   #定义容器使用的镜像以及版本
    ports:
    - containerPort: 80   #定义容器的对外的端口
实例:
vim nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  namespace: kube-public
  labels:
    name: nginx-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx-demo1
  template:
    metadata:
      labels:
        app: nginx-demo1
    spec:
      containers:
        - name: nginx
          image: nginx:1.15.4
          ports:
            - name: http
              containerPort: 80

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wLx8rJCZ-1667632680034)(F:	yporasejpg1147.png)]

创建资源对象

kubectl create -f nginx-deployment.yaml
或者
kubectl apply -f nginx-deployment.yaml

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MyLK0HW1-1667632680034)(F:	yporasejpg1148.png)]

查看创建的pod资源

kubectl get pods -o wide -n kube-public
 
kubectl get deploy -n kube-public

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ClGvxpLE-1667632680034)(F:	yporasejpg1149.png)]

创建service服务对外提供访问并测试

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZojuCRyp-1667632680034)(F:	yporasejpg1150.png)]

vim nginx-service.yaml
 
apiVersion: v1
kind: Service
metadata:
  name: nginx-demo1
  namespace: kube-public
  labels:
    name: nginx-demo1
spec:
  type: NodePort
  ports:
    - port: 8080
      targetPort: 80
      nodePort: 31111
  selector:
    app: nginx-demo1

创建资源对象

kubectl apply -f nginx-service.yaml
 
kubectl get svc -n kube-public

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cRx3fRZr-1667632680034)(F:	yporasejpg1151.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n0GLp9x9-1667632680035)(F:	yporasejpg1152.png)]

k8s中的port概述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x8IjMtrw-1667632680035)(F:	yporasejpg1153.png)]

  • port
port是k8s集群内部访问service的端口,即通过clusterIP: port可以从Pod所在的Node. 上访问到service 
  • nodePort
nodePort是外部访问k8s集群中service的端口,通过nodeIP: nodePort 可以从外部访问到某个service
  • targetPort
targetPort是Pod的端口,从port或nodePort来的流量经过kube-proxy 反向代理负载均衡转发到后端Pod的targetPort上,最后进入容器
  • containerPort
containerPort是Pod内部容器的端口,targetPort 映射到containerPort

创建yaml文件模板

kubectl run --dry-run 打印相应的API 对象 而不执行创建

--dry-run:试运行 
 
kubectl run nginx-test --image=nginx --port=80  --dry-run

–dry-run 表示试运行,不真正执行命令(测试命令是否正确),即并不会真的创建出 pod 和 deployment 实例,去掉该参数后即可真正执行命令

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jDvCleDm-1667632680035)(F:	yporasejpg1154.png)]

查看生成yaml格式

使用 –dry-run 试运行可不触发生成命令,然后通过 -o yaml 可实现对其 yaml 资源配置清单的查看

kubectl run nginx-test --image=nginx --port=80  --dry-run -o yaml

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZK5CeRcg-1667632680035)(F:	yporasejpg1155.png)]

查看生成json格式

可通过 -o json 查看该命令产生的 json 配置清单

kubectl run nginx-test --image=nginx --port=80  --dry-run -o json

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2lJjCc5E-1667632680035)(F:	yporasejpg1156.png)]

使用 yaml 格式导出生成模板

kubectl run nginx-test --image=nginx --port=80 --dry-run -o yaml > nginx-test.ymal


kubectl create deployment nginx-test1 --image=nginx --port=80 --replicas=3 --dry-run=client -o yaml > nginx-test1.yaml

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8pNfF6iW-1667632680036)(F:	yporasejpg1157.png)]

使用 yaml 模板创建实例

kubectl apply -f nginx-test1.yaml

kubectl get pod,deploy

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-j17da9OQ-1667632680036)(F:	yporasejpg1158.png)]

将现有资源生成 yaml 模板导出并保存为文件

kubectl get deploy/nginx-test1 -o yaml

kubectl get deploy/nginx-test1 -o yaml > nginx-test11.yaml

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lppLfW8z-1667632680036)(F:	yporasejpg1159.png)]

查看字段帮助信息

explain 可一层层的查看相关资源对象的帮助信息

kubectl explain deployments.spec.template.spec.containers

kubectl explain pods.spec.containers

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-j7Hg8Vch-1667632680036)(F:	yporasejpg1160.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G3az6ZD9-1667632680036)(F:	yporasejpg1161.png)]

总结

没有相关资源,使用 run 命令 --dry-run 选项

kubectl run dryrun-test --image=nginx --port=80 --replicas=3 --dry-run -o yaml > nginx-test.yaml

已有相关资源,使用 get 命令 --export 选项

kubectl get deploy nginx-test --export -o yaml > nginx-test.yaml