kubectl --help 执行这个命令可以看到命令列表
这里只是 我常用的命令集合

创建资源 ,创建 service,pod等等

kubectl create -f rocketmq-rc.yml

fox.风

删除资源 ,删除已创建 service,pod等等

kubectl delete -f rocketmq-rc.yml

没有资源文件的删除

以下3个操作完成后,没有资源文件的 pod 基本上都可以全部删除

service 删除

先查看

kubectl get service

然后删除

kubectl delete service   xxxx

deployment 删除

先查看

kubectl get deployment

然后删除

kubectl delete deployment   xxxx

rc 删除

先查看

kubectl get rc

然后删除

kubectl delete rc   xxxx

pod 删除后, 一直是terminating状态, 强制删除

rmqui-0 为你的pod

kubectl delete pod rmqui-0 --force --grace-period=0
如果有命名空间的请用下面的
kubectl delete pod rmqui-0 --force --grace-period=0 -n test

重建资源 ,修改已创建 service,pod等等

kubectl replace --force -f rocketmq-rc.yml

注意:这条命令,实际上它是一个组合命令,kubectl delete -f rocketmq-rc.ymlkubectl create -f rocketmq-rc.yml的组合

下面这个命令是 更新资源,但是只能更改少量参数,用的很少

kubectl replace -f rocketmq-rc.yml

重启 pod

rmqui-0 为你的pod
test 为命名空间
rmqui 为你的 deployment

方法一 重启 pod

kubectl rollout restart deploy  rmqui
有命名空间的用下面的
kubectl rollout restart deploy  rmqui -n test
查看部署状态
kubectl rollout status deploy rmqui
或

kubectl rollout status deploy rmqui -n test

方法二重启 pod

kubectl get pod rmqui-0  -o yaml | kubectl replace --force -f -
有命名空间的用下面的
kubectl get pod rmqui-0 -n test -o yaml | kubectl replace --force -f -

方法三 重启 pod

kubectl scale deployment rmqui-0 --replicas=0 && kubectl scale deployment rmqui-0 --replicas=1
有命名空间的用下面的
kubectl scale deployment rmqui-0 --replicas=0 -n test && kubectl scale deployment rmqui-0 --replicas=1 -n test

方法四 重启 pod

kubectl delete pod  rmqui-0
有命名空间的用下面的
kubectl delete pod  rmqui-0 -n test

kubectl edit 编辑资源对象

在有各种 xx.yml文件情况下用的很少,没有yml 文件情况才会使用
例如要修改 service 中的mysql 相关参数,那么先输出为-o yaml格式

kubectl get service mysql -o yaml

然后执行修改命令

kubectl edit service mysql

就会打开如下格式临时文件,修改完成后 ,先按键盘左上角ESC键,输入:wq,保存退出,最后输出Edit cancelled, no changes made.保存应用成功
官方也说了,实际使用的 vi 这个编辑工具

# Please edit the object below. Lines beginning with a '#' will be ignored,
# and an empty file will abort the edit. If an error occurs while saving this file will be
# reopened with the relevant failures.
#
apiVersion: v1
kind: Service
metadata:
  creationTimestamp: "2019-06-14T02:42:00Z"
  labels:
    name: mysql
  name: mysql
  namespace: default
  resourceVersion: "101235"
  selfLink: /api/v1/namespaces/default/services/mysql
  uid: fbf7881d-8e4d-11e9-9b60-4cedfbc99721
spec:
  clusterIP: 10.1.97.58
  externalTrafficPolicy: Cluster
  ports:
  - nodePort: 3306
    port: 3306
    protocol: TCP
    targetPort: 3306
  selector:
    name: mysql
  sessionAffinity: None
  type: NodePort
status:
  loadBalancer: {}

kubectl get 查看 资源

额外参数
-o wide 输出更多点信息
-A 显示命名空间
--show-labels 显示标签

查看 node节点

多台k8s 时用到

kubectl get node

查看 node 标签

kubectl get no --show-labels

更新node 标签

kubectl label node 你的node名称 kubernetes.io/hostname=自定义标签名 --overwrite

查看pods资源

kubectl get pods

输出

NAME                 READY   STATUS    RESTARTS   AGE
elasticsearch-0      1/1     Running   3          27h
kibana-sz5nh         1/1     Running   1          27h

查看 services

kubectl get svc
或
kubectl get service

输出

NAME              TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                                           AGE
elasticsearch     NodePort    10.1.70.10     <none>        9200:9200/TCP,9300:9300/TCP                       27h
kibana            NodePort    10.1.229.10    <none>        5601:5601/TCP                                     27h
kubernetes        ClusterIP   10.1.0.1       <none>        443/TCP                                           2d5h
mysql             NodePort    10.1.97.58     <none>        3306:3306/TCP                                     30h

查看 replicationcontrollers

kubectl get rc

输出

NAME           DESIRED   CURRENT   READY   AGE
kibana         1         1         1       27h
mysql          1         1         1       30h
mysql-master   1         1         1       31h

查看 componentstatuses

kubectl get cs

输出

NAME                 STATUS    MESSAGE             ERROR
scheduler            Healthy   ok
controller-manager   Healthy   ok
etcd-0               Healthy   {"health":"true"}

联合输出

kubectl get svc,pod,cs,rc

pod,service等详情查看

查看 pod 详情

这个比较常用,当 pod的 STATUS 很长时间都不是Running状态时,可以用命令查看
例如,镜像拉取错误,目录不存在等等都有可以查看

kubectl describe pod elasticsearch-0

elasticsearch-0 为 kubectl get pod 列表中的NAME

输出

....
....
数据太多了,就不复制了
....
Volumes:
  vol-logs:
    Type:          HostPath (bare host directory volume)
    Path:          /www/k8s/afm-data/elasticsearch/logs
    HostPathType:  Directory
  vol-data:
    Type:          HostPath (bare host directory volume)
    Path:          /www/k8s/afm-data/elasticsearch/data
    HostPathType:  Directory
  vol-plugins-analysis-ik:
    Type:          HostPath (bare host directory volume)
    Path:          /www/k8s/afm-data/elasticsearch/plugins/analysis-ik
    HostPathType:  Directory
  vol-es:
    Type:          HostPath (bare host directory volume)
    Path:          /www/k8s/afm-data/elasticsearch/config/elasticsearch.yml
    HostPathType:  File
  vol-synonyms:
    Type:          HostPath (bare host directory volume)
    Path:          /www/k8s/afm-data/elasticsearch/config/synonyms.txt
    HostPathType:  File
  default-token-vh8lg:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-vh8lg
    Optional:    false
QoS Class:       Burstable
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s
                 node.kubernetes.io/unreachable:NoExecute for 300s
Events:          <none>

查看 pod 详情

kubectl describe svc elasticsearch

输出

Name:                     elasticsearch
Namespace:                default
Labels:                   app=elasticsearch
Annotations:              <none>
Selector:                 app=elasticsearch
Type:                     NodePort
IP:                       10.1.70.10
Port:                     elasticsearch9200  9200/TCP
TargetPort:               9200/TCP
NodePort:                 elasticsearch9200  9200/TCP
Endpoints:                10.244.0.121:9200
Port:                     elasticsearch9300  9300/TCP
TargetPort:               9300/TCP
NodePort:                 elasticsearch9300  9300/TCP
Endpoints:                10.244.0.121:9300
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>

查看 pod 日志

查看 pod的 stdout 日志

kubectl logs elasticsearch-0

跟踪 pod的 stdout 日志

默认使用Pod的第1个容器执行

kubectl logs -f elasticsearch-0

额外参数
-c 容器名称,可以指定某个具体的容器

进入 pod 内部

默认使用Pod的第1个容器执行

kubectl exec -it elasticsearch-0 bash

额外参数
-n 命名空间
-c 容器名称,可以指定某个具体的容器

pod的状态为Evicted 解决方法

auth-admin-f85f4bcd8-4w44c 0/1 Evicted 0 3h3m
当 pod 状态 为以上状态时

Evicted,即驱赶的意思,意思是当节点出现异常时,kubernetes将有相应的机制驱赶该节点上的Pod。
多见于资源不足时导致的驱赶。

排查资源和异常原因,防止新的驱赶产生。
使用如下命令删除旧驱赶的遗留

kubectl get pods | grep Evicted | awk '{print $1}' | xargs kubectl delete pod