kubectl

Kubectl 命令和kubeconfig

  • kubectl 是一个 Kubernetes 的命令行工具,它允许 Kubernetes 用户以命令行的方式与 Kubernetes 交互,其默认读取配置文件 ~/.kube/config。
  • kubectl 会将接收到的用户请求转化为 rest 调用以 rest client 的形式与 apiserver 通讯。
  • apiserver 的地址,用户信息等配置在 kubeconfig。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
apiVersion: v1
clusters:
- cluster: # kube master 的集群列表
certificate-authority-data: REDACTED
server: https://127.0.0.1:54729
name: kind-kind
contexts: # 连接集群的contexts, 有用户和集群的匹配信息
- context:
cluster: kind-kind
user: kind-kind
name: kind-kind # namespace
current-context: kind-kind # 默认使用的context
kind: Config
users: # 用户信息
- name: kind-kind
user:
client-certificate-data: REDACTED
client-key-data: REDACTED

kubectl 常用命令

查看所有可操作的对象

1
2
kubectl api-resource    # 查看资源对象
kubectl cluster-info # 查看集群信息(查看K8S集群的控制平面即master节点)

查看对象状态

1
2
3
4
5
6
kubectl  get  <resource>  <resource_name> 
# resource可以有 all|pod|ns|svc|rc...
# -n 指定命名空间,不使用该选项指定,则默认查看default命名空间
# -o 指定输出格式 wide|jason|yaml
#-all-namespace或-A:用于表示所有命名空间
#-l 指定标签

删除某种资源

1
2
3
4
5
6
7
kubectl delete <resource> <resource_name> 
# resource可以有 all|pod|ns|svc|rc...
# -n 指定命名空间,不使用该选项指定,则默认查看default命名空间
#-all-namespace或-A:用于表示所有命名空间
#-l 指定标签
#--force 强制删除
#--grace-period=0 选项表示过度存活期,默认为30s,在删除pod之前允许pod慢慢终止在该pod上运行的容器进程,从而优雅退出,0表示立即终止pod

查看对象的细节(Event)

1
2
3
kubectl describe  <resource>  <resource_name> 
# resource可以有 pod|ns|rs...
# -n 指定命名空间,不使用该选项指定,则默认查看default命名空间

进入容器

1
2
kubectl exec -it <pod_name> -c <container_name> bash 
# -n 指定命名空间,不使用该选项指定,则默认查看default命名空间

查看pod的标准输出

1
2
kubectl logs <pod_name>
# -f 追踪日志

根据yaml创建资源

1
2
kubectl apply -f nginx.yaml
# apply 可重复执行, create只有在不存在资源的情况使

根据yaml 删除资源

1
kubectl delete -f nginx.yaml

直接编辑某个资源的yaml文件

1
2
kubectl edit <resource> <name>
# -n 指定命名空间,不使用该选项指定,则默认查看default命名空间

直接运行某个镜像

1
2
kubectl run --image=<image> <podname>
# --port 指定端口号

将资源暴露为新的Kubernetes Service

1
2
3
4
5
kubectl expose <deployment|rs|svc> <resourcename> --port=80 --target-port=80
# --port 指定暴露的端口
# --target-port 容器暴露的端口号

#指定deployment、service、replica set、replication controller或pod ,并使用该资源的选择器作为指定端口上新服务的选择器。deployment 或 replica set只有当其选择器可转换为service支持的选择器时,即当选择器仅包含matchLabels组件时才会作为暴露新的Service。
刘小恺(Kyle) wechat
如有疑问可联系博主