使用kubectl管理k8s集群(三十)
前言
Foreword
在搭建k8s集群之前,我們需要先了解下kubectl的使用,以便在集群部署出現(xiàn)問題時(shí)進(jìn)行檢查和處理。命令和語法記不住沒有關(guān)系,但是請記住主要的語法和命令以及幫助命令的使用。
在下一篇,我們將講述使用Kubeadm來創(chuàng)建k8s集群。
THE END
目錄
使用kubectl管理k8s集群
概述
語法
主要命令(command)說明
資源類型(TYPE)說明
命令標(biāo)準(zhǔn)(flags)說明
格式化輸出
?使用kubectl管理k8s集群
概述
Kubectl是一個(gè)命令行界面,用于運(yùn)行針對Kubernetes集群的命令。Kubectl的配置文件在$HOME/.kube目錄。我們可以通過設(shè)置KUBECONFIG環(huán)境變量或設(shè)置命令參數(shù)--kubeconfig來指定其他位置的kubeconfig文件。
?語法
我們可以使用以下語法kubectl從終端窗口運(yùn)行命令:
kubectl [command] [TYPE] [NAME] [flags]
其中command,TYPE,NAME,和flags分別是:
command:指定要在一個(gè)或多個(gè)資源進(jìn)行的操作,例如create,get,describe,delete。例如“kubectl get cs”。
TYPE:指定資源類型。資源類型不區(qū)分大小寫,可以指定單數(shù),復(fù)數(shù)或縮寫形式。例如,以下命令產(chǎn)生相同的輸出:
NAME:指定資源的名稱。名稱區(qū)分大小寫。如果省略名稱,則顯示所有資源的詳細(xì)信息,如“kubectl get pods”。
在對多個(gè)資源執(zhí)行操作時(shí),我們可以按類型和名稱指定每個(gè)資源,或指定一個(gè)或多個(gè)文件:
1)????????要按類型和名稱指定資源:
如果資源類型相同,則對資源進(jìn)行分組:TYPE1 name1 name2 name<#>。
? ? ?例:kubectl ?get pod example-pod1 example-pod2分別指定多種資源類型:TYPE1/name1 TYPE1/name2 TYPE2/name3 ? ? ?TYPE<#>/name<#>。
? ? ?例:kubectl ?get pod/example-pod1 replicationcontroller/example-rc1
2)????要使用一個(gè)或多個(gè)文件指定資源:?-f file1 -f file2 -f file<#>
注意使用YAML而不是JSON,因?yàn)?/span>YAML往往更加用戶友好,特別是對于配置文件。
? ? ?例:kubectl ? ? ?get pod -f ./pod.yaml
flags:指定的可選標(biāo)志,不過值得注意的是,使用命令行指定參數(shù)會覆蓋默認(rèn)值以及相關(guān)的環(huán)境變量。例如,我們可以使用-s或--server標(biāo)志來指定Kubernetes API服務(wù)器的地址和端口。
?
?主要命令(command)說明
Kubectl的主體操作命令如下表所示:
操作 | 描述 |
annotate | 添加或更新一個(gè)或多個(gè)資源的注釋。 |
api-versions | 列出可用的API版本。 |
apply | 通過文件名或標(biāo)準(zhǔn)輸入流(stdin)對資源進(jìn)行配置,例如“kubectl apply --prune ?-f manifest.yaml -l app=nginx” |
attach | 附加到一個(gè)正在運(yùn)行的容器,以查看輸出流或與容器(stdin)交互。 |
autoscale | 自動(dòng)縮放由Replication Controller管理的pod集。 |
cluster-info | 顯示有關(guān)群集中主服務(wù)器和服務(wù)的端點(diǎn)信息。 |
config | 指定kubeconfig文件。 |
create | 從文件或標(biāo)準(zhǔn)輸入流(stdin)創(chuàng)建一個(gè)或多個(gè)資源。例如使用pod.json創(chuàng)建pod“kubectl create -f ./pod.json”。 |
delete | 通過文件,標(biāo)準(zhǔn)輸入、指定標(biāo)簽選擇器,名稱,資源選擇器或資源來刪除資源。例如刪除所有的pod“kubectl delete pods ?--all”。 |
describe | 顯示一個(gè)或多個(gè)資源的詳細(xì)。例如查看pod“coredns-5c98db65d4-h5v9h”的詳情“kubectl describe pod ?coredns-5c98db65d4-h5v9h -n kube-system”,這里使用了“-n”指定了命名空間。 |
edit | 在服務(wù)器上編輯一個(gè)資源。 |
exec | 在Pod容器中執(zhí)行命令。 |
explain | 查看資源的文檔。例如pod,節(jié)點(diǎn),服務(wù)等。例如“kubectl explain pods”。 |
expose | 將復(fù)制控制器,服務(wù)或pod公開為新的Kubernetes服務(wù)。 |
get | 列出一個(gè)或多個(gè)資源。例如“kubectl get pods -n kube-system ?-o wide”命令將列出“kube-system”命名空間下的所有pod并且以表格狀輸出pod的相關(guān)附加信息(節(jié)點(diǎn)名稱)。 |
label | 添加或更新一個(gè)或多個(gè)資源的標(biāo)簽。 |
logs | 輸出容器在pod中的日志。例如執(zhí)行以下命令“kubectl logs ?etcd-k8s-master -n kube-system”將在終端中輸出該容器的日志。 |
patch | 使用patch策略更新資源的字段。 |
port-forward | 將一個(gè)或多個(gè)本地端口轉(zhuǎn)發(fā)到pod。 |
proxy | 運(yùn)行代理指定到Kubernetes ?API server。 |
replace | 從文件或標(biāo)準(zhǔn)輸入中替換資源。 |
rolling-update | 通過逐步替換指定的Replication ?Controller及其pod來執(zhí)行滾動(dòng)更新。 |
run | 在群集上運(yùn)行指定的映像。例如運(yùn)行Nginx“kubectl run nginx ?--image=nginx”。 |
scale | 設(shè)置新的Deployment, ?ReplicaSet, Replication Controller 或者 Job副本數(shù)量。例如“ubectl ?scale --replicas=3 -f foo.yaml”。 |
version | 顯示客戶端和服務(wù)器上運(yùn)行的Kubernetes版本。 |
api-resources | 輸出服務(wù)端支持的所有的API資源類型。 |
api-versions | 輸出服務(wù)端支持的API版本。 |
更多命令,我們可以執(zhí)行“kubectl help”來查看當(dāng)前所有支持的命令,也可以訪問官方地址
“https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands”
來查看所有的命令說明。在使用的過程中,如果我們不了解單個(gè)命令的具體語法,我們可以使用“kubectl <command> --help”來獲取詳細(xì)介紹,如:
kubectl scale --help
資源類型(TYPE)說明
我們可以使用“kubectlapi-resources”命令來獲取服務(wù)端目前支持的所有的資源類型,如下圖所示:
?命令標(biāo)準(zhǔn)(flags)說明
同樣的,我們可以使用命令“kubectl options”來輸出當(dāng)前支持的所有可選標(biāo)志:
其中,在前面我們說過,“-s”可以指定Kubernetes API 服務(wù)器地址,“-n”可以指定命名空間,“--kubeconfig”可以指定kubeconfig配置文件。主要的一些說明如下所示:
格式化輸出
默認(rèn)情況下,所有的kubectl命令默認(rèn)輸出格式是可讀的純文本格式。要以特定格式將詳細(xì)信息輸出到終端窗口,我們需要使用“-o”或多個(gè)“-output”標(biāo)志。
語法:
kubectl [command] [TYPE] [NAME]-o=<output_format>
?
支持的輸出格式如下表所示:
輸出格式 | 描述 |
-o=custom-columns=<spec> | 輸入指定的逗號分隔的列名列表來打印表格?。 |
-o=custom-columns-file=<filename> | 使用文件中的自定義列模板來打印表。 |
-o=json | 輸出JSON格式的API對象。 |
-o=jsonpath=<template> | 打印在jsonpath表達(dá)式中定義的字段 |
-o=jsonpath-file=<filename> | 打印由文件中的jsonpath表達(dá)式定義的字段。 |
-o=name | 僅打印資源名稱。 |
-o=wide | 以純文本格式輸出任何附加信息。對于pod,包括節(jié)點(diǎn)名稱。 |
-o=yaml | 輸出YAML格式的API對象。 |
例如:
kubectl get pods -n kube-system -o wide
?
往期文章
Docker最全教程——從理論到實(shí)戰(zhàn)(一)
Docker最全教程——從理論到實(shí)戰(zhàn)(二)
Docker最全教程——從理論到實(shí)戰(zhàn)(三)
Docker最全教程——從理論到實(shí)戰(zhàn)(四)
Docker最全教程——從理論到實(shí)戰(zhàn)(五)
Docker最全教程——從理論到實(shí)戰(zhàn)(六)
Docker最全教程——從理論到實(shí)戰(zhàn)(七)
Docker最全教程——從理論到實(shí)戰(zhàn)(八)? ??
Docker最全教程——從理論到實(shí)戰(zhàn)(九)
Docker最全教程之使用Tencent Hub來完成CI(十)
Docker最全教程——數(shù)據(jù)庫容器化(十一)
Docker最全教程——數(shù)據(jù)庫容器化之持久保存數(shù)據(jù)(十二)
Docker最全教程——MongoDB容器化(十三)
Docker最全教程——Redis容器化以及排行榜實(shí)戰(zhàn)(十四)
Docker最全教程之Ubuntu下安裝Docker(十五)
Docker最全教程之樹莓派和Docker(十六)
Docker最全教程之使用TeamCity來完成內(nèi)部CI、CD流程(十七)
Docker最全教程之使用Docker搭建Java開發(fā)環(huán)境(十八)
Docker最全教程之Go實(shí)戰(zhàn),墻裂推薦(十九)
Docker最全教程之使用.NET Core推送釘釘消息(二十)
Docker最全教程之使用 Visual Studio Code玩轉(zhuǎn)Docker(二十一)
Docker最全教程之Python爬網(wǎng)實(shí)戰(zhàn)(二十二)
使用PHP搭建個(gè)人博客站點(diǎn)
Docker最全教程之使用Node.js搭建團(tuán)隊(duì)技術(shù)文檔站(二十四)
Docker最全教程之MySQL容器化 (二十五)
Docker+ Kubernetes已成為云計(jì)算的主流(二十六)
容器化之后如何節(jié)省云端成本?(二十七)
了解Kubernetes主體架構(gòu)(二十八)
使用Minikube部署本地Kubernetes集群(二十九)
總結(jié)
以上是生活随笔為你收集整理的使用kubectl管理k8s集群(三十)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 「Sqlserver」数据分析师有理由爱
- 下一篇: 架构杂谈《四》