Kubectl常用命令
1、格式化输出
输出格式 | 说明 |
-o custom-columns=<spec> | 自定义列名输出,多个列以逗号分隔 |
-o custom-columns-file=<filename> | 设置自定义列名的配置文件名称 |
-o json | 以JSON格式展示 |
-o jsonpath=<template> | 输出jsonpath 表达式定义的字段信息 |
-o jsonpath-file=<filename> | 输出jsonpath表达式定义的字段信息,来源于文件 |
-o name | 仅输出资源对象的名称 |
-o wide | 输出额外信息,例如pod将输出pod所在node信息 |
-o yaml | 以YAML格式显示结果 |
kubectl get <kind> <名称> -o custom-columns= a,b.....
其中<kind> 可以是deployment(deploy),namespace(ns),pod,service(svc)等。
自定义列方式
kubectl get pod nginx-85b98978db-pv55z -o custom-columns=NAME:.metadata.name,RSRC:.metadata.resourtceVersion,NAMESPACE:.metadata.namespace
NAME RSRC NAMESPACE
nginx-85b98978db-pv55z <none> default
自定义文件
kubectl get pod nginx-85b98978db-pv55z -o custom-columns-file=tmp.txt
NAME RSRC
nginx-85b98978db-pv55z 9815
YAML格式
kubectl get pod nginx-85b98978db-pv55z -o yaml
输出额外信息
kubectl get pod nginx-85b98978db-pv55z -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-85b98978db-pv55z 1/1 Running 2 (11h ago) 2d8h 172.17.0.2 node2 <none> <none>
Json格式
kubectl get pod nginx-85b98978db-pv55z -o json
2、常用操作
创建 my-nginx.yaml文件
apiVersion: v1
kind: Namespace
metadata:
name: wssnail-test #指定namespace名称
---
apiVersion: v1 #版本
kind: Pod #类型为pod
metadata: #元数据
name: my-nginx-pod #指定pod名称,不会随机生成
namespace: 'wssnail-test' #指定namespace名称
labels: #定义标签
version: 1.0.0 #标签的值。可以有多个值
env: test
spec:
containers: #pod中容器描述
- name: my-nginx-contaniner #指定容器名称
image: nginx:1.21.4 #指定镜像
imagePullPolicy: IfNotPresent #always 总是拉取镜像;IfNotPresent如果本地没有镜像就从远程拉取;Never仅使用本地镜像,默认是alaways
workingDir: /usr/share/nginx/html #容器启动后的工作目录
ports:
- name: my-port #端口名称
containerPort: 80 #端口
protocol: TCP #网络协议 UDP、TCP
resources: #所需资源
limits: #最大分配资源
memory: "200Mi"
cpu: "700m"
requests: #所需最少资源
memory: "200Mi"
cpu: "100m"
restartPolicy: Always #重启策略 Always pod 一旦终止,无论如何终止都会重启,OnFailure 只有Pod以非零退出码终止;Never将退出码上报给master,不会重启
创建/删除资源
#创建
kubectl create -f my-nginx.yaml
#删除
kubectl delete -f my-nginx.yaml
查看资源信息
#列出 namespace下所有的pod
kubectl get pod -n <namespace名称>
kubectl get pod -n wssnail-test
#查看资源的详细信息
kubectl describe pod <pod名称> -n <namespace名称>
kubectl describe pod my-nginx-pod -n wssnail-test
#资源更新监控
kubectl get pod -n wssnail-test -w
kubectl get pod -n wssnail-test --watch
#显示标签
kubectl get pod my-nginx-pod -n wssnail-test --show-labels
#修改标签
kubectl label pod my-nginx-pod -n wssnail-test version=2.0 --overwrite
进入pod内部
#进入pod内
kubectl -exec -it <pod名称> -n <namespace名称> -- /bin/bash
kubectl exec -it my-nginx-pod -n wssnail-test -- /bin/bash
#输出pod内容器的日志
kubectl logs -f <pod名称> -n <namespace名称>
kubectl logs -f my-nginx-pod -n wssnail-test
在线编辑资源对象
#编辑资源
kubectl edit pod <pod名称> -n <namespace>
kubectl edit pod my-nginx-pod -n wssnail-test
将pod端口号映射到宿主机
#将端口号映射到宿主机 ,这样在当前宿主机就可以通过ip:8080访问到80的pod容器
kubectl port-forward --address 0.0.0.0 pod/<pod名称> -n <namespace> 8080:80
kubectl port-forward --address 0.0.0.0 pod/my-nginx-pod -n wssnail-test 8080:80
其他指令
#列出版本
kubectl api-versions
#从配置文件更新资源配置
kubectl apply -f <filename.yml>
#查看kubectl版本
kubectl version