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.yml
和kubectl 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