語法:
kubectl [command] [TYPE] [NAME] [flags]
1 command:子命令,用於操作Kubernetes集群資源對象的命令,如
create, delete, describe, get, apply等
2 TYPE:資源對象的類型,如
pod, service, rc, deployment, node等,可以單數、復數以及簡寫(pod, pods, po/service,
services, svc)
3 NAME:資源對象的名稱,不指定則返回所有,如get pod 會返回所有pod, get pod nginx, 只返回nginx這個pod
4 flags:kubectl子命令的可選參數,例如-n 指定namespace,-s 指定apiserver的URL
資源對象類型列表
可以用這個命令獲取到:
kubectl explain
或
kubectl api-resources
名稱 簡寫
componentsstatuses cs daemonsets ds deployment deploy events ev endpoints ep horizontalpodautoscalers hpa ingresses ing jobs limitranges limits nodes no namspaces ns pods po persistentvolumes pv persistentvolumeclaims pvc resourcequotas quota replicationcontrollers rc secrets serviceaccounts sa services svc
特殊用法:
kubectl get pods pod1 pod2
kubectl get pod/pod1 rc/rc1
kubectl create -f pod1.yaml -f rc1.yaml -f service1.yaml
kubectl子命令
主要包括對資源的創建、刪除、查看、修改、配置、運行等
kubectl --help 可以查看所有子命令
kubectl參數
kubectl options 可以查看支持的參數,例如--namespace指定所在namespace
kubectl輸出格式
kubectl命令可以用多種格式對結果進行顯示,輸出格式通過-o參數指定:
-o支持的格式有
輸出格式 說明
custom-columns=<spec> 根據自定義列名進行輸出,逗號分隔 custom-columns-file=<filename> 從文件中獲取自定義列名進行輸出 json 以JSON格式顯示結果 jsonpath=<template> 輸出jasonpath表達式定義的字段信息 jasonpath-file=<filename> 輸出jsonpath表達式定義的字段信息,來源於文件 name 僅輸出資源對象的名稱 wide 輸出更多信息,比如會輸出node名 yaml 以yaml格式輸出
舉例:
kubectl get pod -o wide kubectl get pod -o yaml kubectl get pod -o custom-columns=NAME:.metadata.name,RESC:.metadata.resourceVersion kubectl get pod --sort-by=.metadata.name //按name排序
kubectl命令示例:
1)創建資源對象
根據yaml文件創建service和deployment
kubectl create -f my-service.yaml -f my-deploy.yaml
也可以指定一個目錄,這樣可以一次性根據該目錄下所有yaml或json文件定義資源
kubectl create -f <directory>
2)查看資源對象
查看所有pod
kubectl get pods
查看deployment和service
kubectl get deploy,svc
3)描述資源對象
顯示node的詳細信息
kubectl describe nodes <node-name>
顯示pod的詳細信息
kubectl describe pods/<pod-name>
顯示deployment管理的pod信息
kubectl describe pods <deployment-name>
4)刪除資源對象
基於yaml文件刪除
kubectl delete -f pod.yaml
刪除所有包含某個label的pod和service
kubectl delete po,svc -l name=<lable-name>
刪除所有pod
kubectl delete po --all
5)執行容器的命令
在pod中執行某個命令,如date
kubectl exec <pod-name> date //pod-name如果不加,默認會選擇第一個pod
指定pod的某個容器執行命令
kubectl exec <pod-name> date
[root@weifeng04 ~]# kubectl exec frontend-141477217-42863 ls BUILDING.txt NOTICE RUNNING.txt include native-jni-lib work CONTRIBUTING.md README.md bin lib temp LICENSE RELEASE-NOTES conf logs webapps [root@weifeng04 ~]# kubectl exec frontend-141477217-42863 pwd /usr/local/tomcat [root@weifeng04 ~]# [root@weifeng04 ~]# kubectl exec frontend-141477217-42863 date Sat Nov 3 12:23:32 UTC 2018
進入到pod的容器里
kubectl exec -it <pod-name> bash
[root@weifeng04 ~]# kubectl exec -it frontend-141477217-42863 bash root@frontend-141477217-42863:/usr/local/tomcat# ls BUILDING.txt LICENSE README.md RUNNING.txt conf lib native-jni-lib webapps CONTRIBUTING.md NOTICE RELEASE-NOTES bin include logs temp work
6)查看容器日志
kubectl logs <pod-name>
[root@weifeng04 ~]# kubectl logs frontend-141477217-42863 03-Nov-2018 05:44:29.442 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version: Apache Tomcat/8.5.34 03-Nov-2018 05:44:29.446 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built: Sep 4 2018 22:28:22 UTC 03-Nov-2018 05:44:29.448 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server number: 8.5.34.0 03-Nov-2018 05:44:29.448 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name: Linux 03-Nov-2018 05:44:29.448 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version: 3.10.0-862.14.4.el7.x86_64 03-Nov-2018 05:44:29.450 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture: amd64 03-Nov-2018 05:44:29.451 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home:
可以動態查看,類似於tail -f
kubectl logs -f <pod-name> -c <container-name>