Kubernetes之kubectl常用命令使用指南_第1頁(yè)
Kubernetes之kubectl常用命令使用指南_第2頁(yè)
Kubernetes之kubectl常用命令使用指南_第3頁(yè)
Kubernetes之kubectl常用命令使用指南_第4頁(yè)
Kubernetes之kubectl常用命令使用指南_第5頁(yè)
已閱讀5頁(yè),還剩68頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Kubernetes之kubectl常用命令使用指南:1:創(chuàng)建和刪除/liumiaocn/article/details/73913597kubectl是一個(gè)用于操作kubernetes集群的命令行接口,通過利用kubectl的各種命令可以實(shí)現(xiàn)各種功能,是在使用kubernetes中非常常用的工具。這里我們會(huì)通過一些簡(jiǎn)單的實(shí)例來展現(xiàn)其中一些高頻命令的使用方法。

更為重要的是這些命令使用的場(chǎng)景以及能夠解決什么樣的問題。這篇文章我們來介紹一下創(chuàng)建和刪除相關(guān)的命令。常用命令kubectl創(chuàng)建和刪除相關(guān),本文將會(huì)簡(jiǎn)單介紹一下如下命令項(xiàng)番命令說明No.1run在集群上運(yùn)行一個(gè)鏡像No.2create使用文件或者標(biāo)準(zhǔn)輸入的方式創(chuàng)建一個(gè)資源No.3delete使用文件或者標(biāo)準(zhǔn)輸入以及資源名稱或者標(biāo)簽選擇器來刪除某個(gè)資源事前準(zhǔn)備版本[root@ku8-1tmp]#kubectlversionClientVersion:version.Info{Major:"1",Minor:"5",GitVersion:"v1.5.2",GitCommit:"08e099554f3c31f6e6f07b448ab3ed78d0520507",GitTreeState:"clean",BuildDate:"2017-01-12T04:57:25Z",GoVersion:"go1.7.4",Compiler:"gc",Platform:"linux/amd64"}ServerVersion:version.Info{Major:"1",Minor:"5",GitVersion:"v1.5.2",GitCommit:"08e099554f3c31f6e6f07b448ab3ed78d0520507",GitTreeState:"clean",BuildDate:"2017-01-12T04:52:34Z",GoVersion:"go1.7.4",Compiler:"gc",Platform:"linux/amd64"}[root@ku8-1tmp]#1234集群構(gòu)成一主三從的Kubernetes集群項(xiàng)番類型HostnameIPNo.1Masterku8-131No.1Nodeku8-232No.1Nodeku8-333No.1Nodeku8-434[root@ku8-1tmp]#kubectlgetnodesNAMESTATUSAGE32Ready12m33Ready11m34Ready11m[root@ku8-1tmp]#123456kubectlrun運(yùn)行一個(gè)鏡像kubectlrun和dockerrun一樣,它能將一個(gè)鏡像運(yùn)行起來,我們使用kubectlrun來將一個(gè)sonarqube的鏡像啟動(dòng)起來。[root@ku8-1tmp]#kubectlrunsonarqube--image=31:5000/sonarqube:5.6.5--replicas=1--port=9000deployment"sonarqube"created[root@ku8-1tmp]#123讓我們來看看這條kubectlrun之后,kubernetes做了什么,從它的提示看到創(chuàng)建了一個(gè)deployment(1.4之后推薦的方式)。確認(rèn)Deployment[root@ku8-1tmp]#kubectlgetdeploymentNAMEDESIREDCURRENTUP-TO-DATEAVAILABLEAGEsonarqube11115m[root@ku8-1tmp]#1234確認(rèn)podkubernetes將鏡像運(yùn)行在pod中以方便實(shí)施卷和網(wǎng)絡(luò)共享等管理,使用getpods可以清楚的看到生成了一個(gè)pod[root@ku8-1tmp]#kubectlgetpodsNAMEREADYSTATUSRESTARTSAGEsonarqube-1880671902-s3fdq1/1Running06m[root@ku8-1tmp]#1234kubectldelete讓我們來試著使用kubectldelete刪除一下這些創(chuàng)建的對(duì)象刪除pod[root@ku8-1tmp]#kubectldeletepodssonarqube-1880671902-s3fdqpod"sonarqube-1880671902-s3fdq"deleted[root@ku8-1tmp]#123確認(rèn)結(jié)果可以看到剛剛生成的sonarqube-1880671902-s3fdq正在結(jié)束(Terminating),隨之一個(gè)新的sonarqube-1880671902-n75d2正在創(chuàng)建,這是正是確保replicas為1的動(dòng)作。[root@ku8-1tmp]#kubectlgetpodsNAMEREADYSTATUSRESTARTSAGEsonarqube-1880671902-n75d20/1ContainerCreating011ssonarqube-1880671902-s3fdq0/1Terminating010m[root@ku8-1tmp]#12345再次確認(rèn)稍等之后再次確認(rèn),發(fā)現(xiàn)replicas仍然保持在1個(gè)的狀態(tài)[root@ku8-1tmp]#kubectlgetpodsNAMEREADYSTATUSRESTARTSAGEsonarqube-1880671902-n75d21/1Running040s[root@ku8-1tmp]#kubectlgetdeploymentsNAMEDESIREDCURRENTUP-TO-DATEAVAILABLEAGEsonarqube111115m[root@ku8-1tmp]#1234567刪除deployment直接刪除pod觸發(fā)了replicas的確保機(jī)制,那么我們刪除deployment[root@ku8-1tmp]#kubectldeletedeploymentsonarqubedeployment"sonarqube"deleted[root@ku8-1tmp]#123結(jié)果確認(rèn)通過使用deployment進(jìn)行刪除,則全部刪除。[root@ku8-1tmp]#kubectlgetpodsNoresourcesfound.[root@ku8-1tmp]#kubectlgetdeploymentsNoresourcesfound.[root@ku8-1tmp]#12345kubectlcreate使用kubectlrun在設(shè)定很復(fù)雜的時(shí)候需要非常長(zhǎng)的一條語(yǔ)句,敲半天也很容易出錯(cuò),也沒法保存,在碰到轉(zhuǎn)義字符的時(shí)候也經(jīng)常會(huì)很抓狂,所以更多場(chǎng)景下會(huì)使用yaml或者json文件,而使用kubectlcreate或者delete就可以利用這些yaml文件。

比如,我們使用如下的方式來分別創(chuàng)建mysql和sonarqube的RC。事前準(zhǔn)備[root@ku8-1tmp]#lsyamlsmysql.yamlsonar.yaml[root@ku8-1tmp]#catyamls/mysql.yamlkind:ReplicationControllerapiVersion:v1metadata:name:mysqlspec:replicas:1selector:name:mysqltemplate:metadata:labels:name:mysqlspec:containers:-name:mysqlimage:31:5000/mysql:5.7.16ports:-containerPort:3306protocol:TCPenv:-name:MYSQL_ROOT_PASSWORDvalue:"hello123"[root@ku8-1tmp]#[root@ku8-1tmp]#catyamls/sonar.yamlkind:ReplicationControllerapiVersion:v1metadata:name:sonarqubespec:replicas:1selector:name:sonarqubetemplate:metadata:labels:name:sonarqubespec:containers:-name:sonarqubeimage:31:5000/sonarqube:5.6.5ports:-containerPort:9000protocol:TCP[root@ku8-1tmp]#12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849創(chuàng)建(MYSQL)[root@ku8-1tmp]#kubectlcreate-fyamls/mysql.yamlreplicationcontroller"mysql"created[root@ku8-1tmp]#123確認(rèn)(MYSQL)[root@ku8-1tmp]#kubectlgetrcNAMEDESIREDCURRENTREADYAGEmysql1111m[root@ku8-1tmp]#kubectlgetpodNAMEREADYSTATUSRESTARTSAGEmysql-nl8sq1/1Running01m[root@ku8-1tmp]#1234567創(chuàng)建(SONARQUBE)[root@ku8-1tmp]#kubectlcreate-fyamls/sonar.yamlreplicationcontroller"sonarqube"created[root@ku8-1tmp]#123確認(rèn)(SONARQUBE)[root@ku8-1tmp]#kubectlgetpodsNAMEREADYSTATUSRESTARTSAGEmysql-nl8sq1/1Running02msonarqube-p1cnj1/1Running046s[root@ku8-1tmp]#kubectlgetrcNAMEDESIREDCURRENTREADYAGEmysql1112msonarqube11151s[root@ku8-1tmp]#123456789刪除(SONARQUBE)使用yaml文件也可以直接刪除所創(chuàng)建出來的內(nèi)容,比如我們先刪除剛剛創(chuàng)建的sonarqube相關(guān)。[root@ku8-1tmp]#kubectldelete-fyamls/sonar.yamlreplicationcontroller"sonarqube"deleted[root@ku8-1tmp]#123確認(rèn)(SONARQUBE)[root@ku8-1tmp]#kubectlgetpodsNAMEREADYSTATUSRESTARTSAGEmysql-nl8sq1/1Running04m[root@ku8-1tmp]#kubectlgetrcNAMEDESIREDCURRENTREADYAGEmysql1114m[root@ku8-1tmp]#1234567刪除(MYSQL)[root@ku8-1tmp]#kubectldelete-fyamls/mysql.yamlreplicationcontroller"mysql"deleted[root@ku8-1tmp]#123確認(rèn)(MYSQL)[root@ku8-1tmp]#kubectlgetpodsNoresourcesfound.[root@ku8-1tmp]#kubectlgetrcNoresourcesfound.[root@ku8-1tmp]#12345Deployment方式:準(zhǔn)備RC在1.4之后已經(jīng)被建議用Deployment方式替換,主要只需要替換kind和apiversion和selector即可,1.5和1.6在此處也略有區(qū)別。[root@ku8-1tmp]#lsyamls/mysql.yamlsonar.yaml[root@ku8-1tmp]#catyamls/mysql.yamlkind:DeploymentapiVersion:extensions/v1beta1metadata:name:mysqlspec:replicas:1template:metadata:labels:name:mysqlspec:containers:-name:mysqlimage:31:5000/mysql:5.7.16ports:-containerPort:3306protocol:TCPenv:-name:MYSQL_ROOT_PASSWORDvalue:"hello123"[root@ku8-1tmp]#[root@ku8-1tmp]#catyamls/sonar.yamlkind:DeploymentapiVersion:extensions/v1beta1metadata:name:sonarqubespec:replicas:1template:metadata:labels:name:sonarqubespec:containers:-name:sonarqubeimage:31:5000/sonarqube:5.6.5ports:-containerPort:9000protocol:TCP[root@ku8-1tmp]#123456789101112131415161718192021222324252627282930313233343536373839404142434445創(chuàng)建有多個(gè)yaml文件的時(shí)候,可以使用如下方式一下全部創(chuàng)建[root@ku8-1tmp]#kubectlcreate-fyamls/deployment"mysql"createddeployment"sonarqube"created[root@ku8-1tmp]#1234確認(rèn)[root@ku8-1tmp]#kubectlgetpodsNAMEREADYSTATUSRESTARTSAGEmysql-478535978-2l7kq1/1Running03msonarqube-3574384362-x3mg21/1Running03m[root@ku8-1tmp]#kubectlgetdeploymentsNAMEDESIREDCURRENTUP-TO-DATEAVAILABLEAGEmysql11113msonarqube11113m[root@ku8-1tmp]#123456789刪除同樣,有多個(gè)yaml文件的時(shí)候,可以使用如下方式一下全部刪除[root@ku8-1tmp]#kubectldelete-fyamls/deployment"mysql"deleteddeployment"sonarqube"deleted[root@ku8-1tmp]#1234確認(rèn)[root@ku8-1tmp]#kubectlgetpodsNoresourcesfound.[root@ku8-1tmp]#kubectlgetdeploymentsNoresourcesfound.[root@ku8-1tmp]#12345總結(jié)這篇文章通過幾個(gè)最簡(jiǎn)單的命令熟悉了如何使用kubectl對(duì)鏡像進(jìn)行創(chuàng)建和刪除,在后面我們會(huì)進(jìn)一步介紹一些常用的命令。Kubernetes之kubectl常用命令使用指南:2:故障排查/liumiaocn/article/details/73925301kubectl是一個(gè)用于操作kubernetes集群的命令行接口,通過利用kubectl的各種命令可以實(shí)現(xiàn)各種功能,是在使用kubernetes中非常常用的工具。這里我們會(huì)通過一些簡(jiǎn)單的實(shí)例來展現(xiàn)其中一些高頻命令的使用方法。

更為重要的是這些命令使用的場(chǎng)景以及能夠解決什么樣的問題。上篇文章我們介紹了創(chuàng)建和刪除相關(guān)的幾條命令,這篇文章我們來看一下出現(xiàn)問題時(shí)最常用的另外九條命令。常用命令kubectl故障排查相關(guān),本文將會(huì)簡(jiǎn)單介紹一下如下命令項(xiàng)番命令說明No.1version顯示客戶端和服務(wù)器側(cè)版本信息No.2api-versions以group/version的格式顯示服務(wù)器側(cè)所支持的API版本No.3explain顯示資源文檔信息No.4get取得確認(rèn)對(duì)象信息列表No.5describe取得確認(rèn)對(duì)象的詳細(xì)信息No.6logs取得pod中容器的log信息No.7exec在容器中執(zhí)行一條命令No.8cp從容器考出或向容器考入文件No.9attachAttach到一個(gè)運(yùn)行中的容器上事前準(zhǔn)備kubectlversionversion命令用于確認(rèn)客戶端和服務(wù)器側(cè)的版本信息,不同的版本的情況變化可能很大,所以故障排除時(shí)首先也需要確認(rèn)的是現(xiàn)場(chǎng)環(huán)境的版本信息。

從下面可以清楚地看到,本文驗(yàn)證時(shí)所使用的版本為1.5.2[root@ku8-1tmp]#kubectlversionClientVersion:version.Info{Major:"1",Minor:"5",GitVersion:"v1.5.2",GitCommit:"08e099554f3c31f6e6f07b448ab3ed78d0520507",GitTreeState:"clean",BuildDate:"2017-01-12T04:57:25Z",GoVersion:"go1.7.4",Compiler:"gc",Platform:"linux/amd64"}ServerVersion:version.Info{Major:"1",Minor:"5",GitVersion:"v1.5.2",GitCommit:"08e099554f3c31f6e6f07b448ab3ed78d0520507",GitTreeState:"clean",BuildDate:"2017-01-12T04:52:34Z",GoVersion:"go1.7.4",Compiler:"gc",Platform:"linux/amd64"}[root@ku8-1tmp]#1234集群構(gòu)成一主三從的Kubernetes集群項(xiàng)番類型HostnameIPNo.1Masterku8-131No.1Nodeku8-232No.1Nodeku8-333No.1Nodeku8-434[root@ku8-1tmp]#kubectlgetnodesNAMESTATUSAGE32Ready12m33Ready11m34Ready11m[root@ku8-1tmp]#123456kubectlapi-versions使用api-versions命令可以列出當(dāng)前版本的kubernetes的服務(wù)器端所支持的api版本信息。[root@ku8-1tmp]#kubectlapi-versionsapps/v1beta1authentication.k8s.io/v1beta1authorization.k8s.io/v1beta1autoscaling/v1batch/v1certificates.k8s.io/v1alpha1extensions/v1beta1policy/v1beta1rbac.authorization.k8s.io/v1alpha1storage.k8s.io/v1beta1v1[root@ku8-1tmp]#12345678910111213kubectlexplain使用kubectlexplain可以和kubectlhelp一樣進(jìn)行輔助的功能確認(rèn),使用它可以了解各個(gè)部分的說明和組成部分。比如如下可以看到對(duì)rc的說明,在故障排除時(shí)作用并不具有太大作用,到是可以多讀讀加深一下對(duì)各個(gè)部分的理解。[root@ku8-1~]#kubectlexplainrcDESCRIPTION:ReplicationControllerrepresentstheconfigurationofareplicationcontroller.FIELDS:apiVersion<string>APIVersiondefinestheversionedschemaofthisrepresentationofanobject.Serversshouldconvertrecognizedschemastothelatestinternalvalue,andmayrejectunrecognizedvalues.Moreinfo:http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resourceskind<string>KindisastringvaluerepresentingtheRESTresourcethisobjectrepresents.Serversmayinferthisfromtheendpointtheclientsubmitsrequeststo.Cannotbeupdated.InCamelCase.Moreinfo:http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kindsmetadata<Object>IftheLabelsofaReplicationControllerareempty,theyaredefaultedtobethesameasthePod(s)thatthereplicationcontrollermanages.Standardobject'smetadata.Moreinfo:http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadataspec<Object>Specdefinesthespecificationofthedesiredbehaviorofthereplicationcontroller.Moreinfo:http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-statusstatus<Object>Statusisthemostrecentlyobservedstatusofthereplicationcontroller.Thisdatamaybeoutofdatebysomewindowoftime.Populatedbythesystem.Read-only.Moreinfo:http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status[root@ku8-1~]#123456789101112131415161718192021222324252627282930313233343536explain命令能夠確認(rèn)的信息類別其所能支持的類別如下:類別clusters(僅對(duì)federationapiservers有效)componentstatuses(縮寫cs)configmaps(縮寫cm)daemonsets(縮寫ds)deployments(縮寫deploy)endpoints(縮寫ep)events(縮寫ev)horizontalpodautoscalers(縮寫hpa)ingresses(縮寫ing)jobslimitranges(縮寫limits)namespaces(縮寫ns)networkpoliciesnodes(縮寫no)persistentvolumeclaims(縮寫pvc)persistentvolumes(縮寫pv)pods(縮寫po)podsecuritypolicies(縮寫psp)podtemplatesreplicasets(縮寫rs)replicationcontrollers(縮寫rc)resourcequotas(縮寫quota)secretsserviceaccounts(縮寫sa)services(縮寫svc)statefulsetsstorageclassesthirdpartyresources事前準(zhǔn)備剩下的一些命令需要事前作一些準(zhǔn)備,我們還是用上篇文章所用的yaml文件創(chuàng)建mysql和sonarqube的Deployment和pod。yaml文件準(zhǔn)備[root@ku8-1tmp]#lsyamlsmysql.yamlsonar.yaml[root@ku8-1tmp]#catyamls/mysql.yamlkind:DeploymentapiVersion:extensions/v1beta1metadata:name:mysqlspec:replicas:1template:metadata:labels:name:mysqlspec:containers:-name:mysqlimage:31:5000/mysql:5.7.16ports:-containerPort:3306protocol:TCPenv:-name:MYSQL_ROOT_PASSWORDvalue:"hello123"[root@ku8-1tmp]#catyamls/sonar.yamlkind:DeploymentapiVersion:extensions/v1beta1metadata:name:sonarqubespec:replicas:1template:metadata:labels:name:sonarqubespec:containers:-name:sonarqubeimage:31:5000/sonarqube:5.6.5ports:-containerPort:9000protocol:TCP[root@ku8-1tmp]#1234567891011121314151617181920212223242526272829303132333435363738394041424344啟動(dòng)[root@ku8-1tmp]#kubectlcreate-fyamls/deployment"mysql"createddeployment"sonarqube"created[root@ku8-1tmp]#1234kubectlget使用get命令確認(rèn)所創(chuàng)建出來的pod和deployment的信息確認(rèn)pod可以看到創(chuàng)建出來的pod的所有信息,也可以使用Kubectlgetpo進(jìn)行確認(rèn)[root@ku8-1tmp]#kubectlgetpodsNAMEREADYSTATUSRESTARTSAGEmysql-478535978-1dnm21/1Running034ssonarqube-3574384362-m7mdq1/1Running034s[root@ku8-1tmp]#12345確認(rèn)deployment可以看到創(chuàng)建出來的deployment的所有信息[root@ku8-1tmp]#kubectlgetdeploymentsNAMEDESIREDCURRENTUP-TO-DATEAVAILABLEAGEmysql111141ssonarqube111141s[root@ku8-1tmp]#12345如果希望得到更加詳細(xì)一點(diǎn)的信息,可以加上-owide參數(shù),比如對(duì)pods可以看到此pod在哪個(gè)node上運(yùn)行,此pod的集群IP是多少也被一并顯示了[root@ku8-1tmp]#kubectlgetpods-owideNAMEREADYSTATUSRESTARTSAGEIPNODEmysql-478535978-1dnm21/1Running02m33sonarqube-3574384362-m7mdq1/1Running02m34[root@ku8-1tmp]#12345確認(rèn)node信息顯示node的信息[root@ku8-1tmp]#kubectlgetnodes-owideNAMESTATUSAGEEXTERNAL-IP32Ready6h<none>33Ready6h<none>34Ready6h<none>[root@ku8-1tmp]#123456確認(rèn)namespace信息列出所有的namespace[root@ku8-1tmp]#kubectlgetnamespacesNAMESTATUSAGEdefaultActive6hkube-systemActive6h[root@ku8-1tmp]#12345get命令能夠確認(rèn)的信息類別使用node/pod/event/namespaces等結(jié)合起來,能夠獲取集群基本信息和狀況,其所能支持的類別如下:類別clusters(僅對(duì)federationapiservers有效)componentstatuses(縮寫cs)configmaps(縮寫cm)daemonsets(縮寫ds)deployments(縮寫deploy)endpoints(縮寫ep)events(縮寫ev)horizontalpodautoscalers(縮寫hpa)ingresses(縮寫ing)jobslimitranges(縮寫limits)namespaces(縮寫ns)networkpoliciesnodes(縮寫no)persistentvolumeclaims(縮寫pvc)persistentvolumes(縮寫pv)pods(縮寫po)podsecuritypolicies(縮寫psp)podtemplatesreplicasets(縮寫rs)replicationcontrollers(縮寫rc)resourcequotas(縮寫quota)secretsserviceaccounts(縮寫sa)services(縮寫svc)statefulsetsstorageclassesthirdpartyresourceskubectldescribe確認(rèn)node詳細(xì)信息一般使用get命令取得node信息,然后使用describe確認(rèn)詳細(xì)信息。[root@ku8-1tmp]#kubectlgetnodesNAMESTATUSAGE32Ready6h33Ready6h34Ready6h[root@ku8-1tmp]#kubectldescribenode32Name:32Role:Labels:beta.kubernetes.io/arch=amd64beta.kubernetes.io/os=linuxkubernetes.io/hostname=32Taints:<none>CreationTimestamp:Wed,28Jun201723:06:22-0400Phase:Conditions:TypeStatusLastHeartbeatTimeLastTransitionTimeReasonMessageOutOfDiskFalseThu,29Jun201705:52:07-0400Wed,28Jun201723:06:22-0400KubeletHasSufficientDiskkubelethassufficientdiskspaceavailableMemoryPressureFalseThu,29Jun201705:52:07-0400Wed,28Jun201723:06:22-0400KubeletHasSufficientMemorykubelethassufficientmemoryavailableDiskPressureFalseThu,29Jun201705:52:07-0400Wed,28Jun201723:06:22-0400KubeletHasNoDiskPressurekubelethasnodiskpressureReadyTrueThu,29Jun201705:52:07-0400Wed,28Jun201723:06:34-0400KubeletReadykubeletispostingreadystatusAddresses:32,32,32Capacity:alpha.kubernetes.io/nvidia-gpu:0cpu:1memory:2032128Kipods:110Allocatable:alpha.kubernetes.io/nvidia-gpu:0cpu:1memory:2032128Kipods:110SystemInfo:MachineID:22718f24279240be9fe0c469187f901aSystemUUID:9F584D56-F5B3-FAB8-3985-938D67451312BootID:fe3b2606-37ee-4b07-8de2-438fe29bf765KernelVersion:3.10.0-514.el7.x86_64OSImage:CentOSLinux7(Core)OperatingSystem:linuxArchitecture:amd64ContainerRuntimeVersion:docker://1.13.1KubeletVersion:v1.5.2Kube-ProxyVersion:v1.5.2ExternalID:32Non-terminatedPods:(0intotal)NamespaceNameCPURequestsCPULimitsMemoryRequestsMemoryLimitsAllocatedresources:(Totallimitsmaybeover100percent,i.e.,overcommitted.CPURequestsCPULimitsMemoryRequestsMemoryLimits0(0%)0(0%)0(0%)0(0%)Noevents.[root@ku8-1tmp]#123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354確認(rèn)pod確認(rèn)某一pod詳細(xì)信息[root@ku8-1tmp]#kubectldescribepodmysql-478535978-1dnm2Name:mysql-478535978-1dnm2Namespace:defaultNode:33/33StartTime:Thu,29Jun201705:04:21-0400Labels:name=mysqlpod-template-hash=478535978Status:RunningIP:Controllers:ReplicaSet/mysql-478535978Containers:mysql:ContainerID:docker://47ef1495e86f4b69414789e81081fa55b837dafe9e47944894e7cb3733700410Image:31:5000/mysql:5.7.16ImageID:docker-pullable://31:5000/mysql@sha256:410b279f6827492da7a355135e6e9125849f62eeca76429974a534f021852b58Port:3306/TCPState:RunningStarted:Thu,29Jun201705:04:22-0400Ready:TrueRestartCount:0VolumeMounts:/var/run/secrets/kubernetes.io/serviceaccountfromdefault-token-dzs1w(ro)EnvironmentVariables:MYSQL_ROOT_PASSWORD:hello123Conditions:TypeStatusInitializedTrueReadyTruePodScheduledTrueVolumes:default-token-dzs1w:Type:Secret(avolumepopulatedbyaSecret)SecretName:default-token-dzs1wQoSClass:BestEffortTolerations:<none>Noevents.[root@ku8-1tmp]#12345678910111213141516171819202122232425262728293031323334353637確認(rèn)deployment詳細(xì)信息確認(rèn)某一deployment的詳細(xì)信息[root@ku8-1tmp]#kubectlgetdeploymentNAMEDESIREDCURRENTUP-TO-DATEAVAILABLEAGEmysql11111hsonarqube11111h[root@ku8-1tmp]#kubectldescribedeploymentmysqlName:mysqlNamespace:defaultCreationTimestamp:Thu,29Jun201705:04:21-0400Labels:name=mysqlSelector:name=mysqlReplicas:1updated|1total|1available|0unavailableStrategyType:RollingUpdateMinReadySeconds:0RollingUpdateStrategy:1maxunavailable,1maxsurgeConditions:TypeStatusReasonAvailableTrueMinimumReplicasAvailableOldReplicaSets:<none>NewReplicaSet:mysql-478535978(1/1replicascreated)Noevents.[root@ku8-1tmp]#12345678910111213141516171819202122describe命令能夠確認(rèn)的信息describe命令所能支持的類別如下:類別clusters(僅對(duì)federationapiservers有效)componentstatuses(縮寫cs)configmaps(縮寫cm)daemonsets(縮寫ds)deployments(縮寫deploy)endpoints(縮寫ep)events(縮寫ev)horizontalpodautoscalers(縮寫hpa)ingresses(縮寫ing)jobslimitranges(縮寫limits)namespaces(縮寫ns)networkpoliciesnodes(縮寫no)persistentvolumeclaims(縮寫pvc)persistentvolumes(縮寫pv)pods(縮寫po)podsecuritypolicies(縮寫psp)podtemplatesreplicasets(縮寫rs)replicationcontrollers(縮寫rc)resourcequotas(縮寫quota)secretsserviceaccounts(縮寫sa)services(縮寫svc)statefulsetsstorageclassesthirdpartyresourceskubectllogs類似于dockerlogs,使用kubectllogs能夠取出pod中鏡像的log,也是故障排除時(shí)候的重要信息[root@ku8-1tmp]#kubectlgetpodsNAMEREADYSTATUSRESTARTSAGEmysql-478535978-1dnm21/1Running01hsonarqube-3574384362-m7mdq1/1Running01h[root@ku8-1tmp]#kubectllogsmysql-478535978-1dnm2Initializingdatabase...2017-06-29T09:04:37.081939Z0[Note]EventScheduler:Loaded0events2017-06-29T09:04:37.082097Z0[Note]mysqld:readyforconnections.Version:'5.7.16'socket:'/var/run/mysqld/mysqld.sock'port:3306MySQLCommunityServer(GPL)[root@ku8-1tmp]#1234567891011kubectlexecexec命令用于到容器中執(zhí)行一條命令,比如下述命令用于到mysql的鏡像中執(zhí)行hostname命令[root@ku8-1tmp]#kubectlgetpodsNAMEREADYSTATUSRESTARTSAGEmysql-478535978-1dnm21/1Running01hsonarqube-3574384362-m7mdq1/1Running01h[root@ku8-1tmp]#kubectlexecmysql-478535978-1dnm2hostnamemysql-478535978-1dnm2[root@ku8-1tmp]#1234567更為常用的方式則是登陸到pod中,在有條件的時(shí)候,進(jìn)行故障發(fā)生時(shí)的現(xiàn)場(chǎng)確認(rèn),這種方式是最為直接有效和快速,但是對(duì)權(quán)限要求也較多。[root@ku8-1tmp]#kubectlexec-itmysql-478535978-1dnm2sh#hostnamemysql-478535978-1dnm2#1234kubectlcp用于pod和外部的文件交換,比如如下示例了如何在進(jìn)行內(nèi)外文件交換。在pod中創(chuàng)建一個(gè)文件message.log[root@ku8-1tmp]#kubectlexec-itmysql-478535978-1dnm2sh#pwd/#cd/tmp#echo"thisisamessagefrom`hostname`">message.log#catmessage.logthisisamessagefrommysql-478535978-1dnm2#exit[root@ku8-1tmp]#123456789拷貝出來并確認(rèn)[root@ku8-1tmp]#kubectlcpmysql-478535978-1dnm2:/tmp/message.logmessage.logtar:Removingleading`/'frommembernames[root@ku8-1tmp]#catmessage.logthisisamessagefrommysql-478535978-1dnm2[root@ku8-1tmp]#12345更改message.log并拷貝回pod[root@ku8-1tmp]#echo"informationaddedin`hostname`">>message.log[root@ku8-1tmp]#catmessage.logthisisamessagefrommysql-478535978-1dnm2informationaddedinku8-1[root@ku8-1tmp]#kubectlcpmessage.logmysql-478535978-1dnm2:/tmp/message.log[root@ku8-1tmp]#123456確認(rèn)更改后的信息[root@ku8-1tmp]#kubectlexecmysql-478535978-1dnm2cat/tmp/message.logthisisamessagefrommysql-478535978-1dnm2informationaddedinku8-1[root@ku8-1tmp]#1234kubectlattach類似于dockerattach的功能,用于取得實(shí)時(shí)的類似于kubectllogs的信息[root@ku8-1tmp]#kubectlgetpodsNAMEREADYSTATUSRESTARTSAGEmysql-478535978-1dnm21/1Running01hsonarqube-3574384362-m7mdq1/1Running01h[root@ku8-1tmp]#kubectlattachsonarqube-3574384362-m7mdqIfyoudon'tseeacommandprompt,trypressingenter.1234567kubectlcluster-info使用cluster-info和cluster-infodump也能取出一些信息,尤其是你需要看整體的全部信息的時(shí)候一條命令一條命令的執(zhí)行不如kubectlcluster-infodump來的快一些[root@ku8-1tmp]#kubectlcluster-infoKubernetesmasterisrunningathttp://localhost:8080Tofurtherdebuganddiagnoseclusterproblems,use'kubectlcluster-infodump'.[root@ku8-1tmp]#12345總結(jié)這篇文章中介紹了九個(gè)kubectl的常用命令,利用它們?cè)诠收洗_認(rèn)和排查中非常有效。Kubernetes之kubectl常用命令使用指南:3:故障對(duì)應(yīng)/liumiaocn/article/details/73997635kubectl是一個(gè)用于操作kubernetes集群的命令行接口,通過利用kubectl的各種命令可以實(shí)現(xiàn)各種功能,是在使用kubernetes中非常常用的工具。這里我們會(huì)通過一些簡(jiǎn)單的實(shí)例來展現(xiàn)其中一些高頻命令的使用方法。

更為重要的是這些命令使用的場(chǎng)景以及能夠解決什么樣的問題。上篇文章我們介紹了故障排查時(shí)常用的九條命令,這篇文章我們來看一下故障對(duì)應(yīng)時(shí)最常用的另外九條命令。常用命令kubectl故障對(duì)應(yīng)相關(guān),本文將會(huì)簡(jiǎn)單介紹一下如下命令項(xiàng)番命令說明No.1edit編輯服務(wù)器側(cè)資源No.2replace使用文件名或者標(biāo)準(zhǔn)輸入資源No.3patch部分更新資源相關(guān)信息No.4apply使用文件或者標(biāo)準(zhǔn)輸入更改配置信息No.5scale重新設(shè)定Deployment/ReplicaSet/RC/Job的sizeNo.6autoscaleDeployment/ReplicaSet/RC的自動(dòng)擴(kuò)展設(shè)定No.7cordon設(shè)定node不可使用No.8uncordon設(shè)定node可以使用No.9drain設(shè)定node進(jìn)入維護(hù)模式事前準(zhǔn)備版本[root@ku8-1tmp]#kubectlversionClientVersion:version.Info{Major:"1",Minor:"5",GitVersion:"v1.5.2",GitCommit:"08e099554f3c31f6e6f07b448ab3ed78d0520507",GitTreeState:"clean",BuildDate:"2017-01-12T04:57:25Z",GoVersion:"go1.7.4",Compiler:"gc",Platform:"linux/amd64"}ServerVersion:version.Info{Major:"1",Minor:"5",GitVersion:"v1.5.2",GitCommit:"08e099554f3c31f6e6f07b448ab3ed78d0520507",GitTreeState:"clean",BuildDate:"2017-01-12T04:52:34Z",GoVersion:"go1.7.4",Compiler:"gc",Platform:"linux/amd64"}[root@ku8-1tmp]#1234集群構(gòu)成一主三從的Kubernetes集群項(xiàng)番類型HostnameIPNo.1Masterku8-131No.1Nodeku8-232No.1Nodeku8-333No.1Nodeku8-434[root@ku8-1tmp]#kubectlgetnodesNAMESTATUSAGE32Ready12m33Ready11m34Ready11m[root@ku8-1tmp]#123456事前準(zhǔn)備鏡像準(zhǔn)備使用如下官方鏡像進(jìn)行實(shí)驗(yàn),因?yàn)橹饕糜谑纠?,自行使用各種鏡像均可鏡像版本說明nginx-alpine1.12nginx的1.12的alpine版本的官方鏡像nginx-alpine1.13nginx的1.13的alpine版本的官方鏡像設(shè)定yaml使用Deployment方式啟動(dòng)nginx的pod加上service的設(shè)定,簡(jiǎn)單如下:[root@ku8-1tmp]#catnginx/nginx.yamlkind:DeploymentapiVersion:extensions/v1beta1metadata:name:nginxspec:replicas:1template:metadata:labels:name:nginxspec:containers:-name:nginximage:31:5000/nginx:1.12-alpineports:-containerPort:80protocol:TCPkind:ServiceapiVersion:v1metadata:name:nginxlabels:name:nginxspec:type:NodePortports:-protocol:TCPnodePort:31001targetPort:80port:80selector:name:nginx[root@ku8-1tmp]#123456789101112131415161718192021222324252627282930313233343536kubectlcreate創(chuàng)建pod/deployment/service[root@ku8-1tmp]#kubectlcreate-fnginx/deployment"nginx"createdservice"nginx"created[root@ku8-1tmp]#1234確認(rèn)創(chuàng)建pod/deployment/service[root@ku8-1tmp]#kubectlgetserviceNAMECLUSTER-IPEXTERNAL-IPPORT(S)AGEkubernetes<none>443/TCP1dnginx12<nodes>80:31001/TCP58s[root@ku8-1tmp]#kubectlgetpodNAMEREADYSTATUSRESTARTSAGEnginx-2476590065-1vtsp1/1Running01m[root@ku8-1tmp]#kubectlgetdeployNAMEDESIREDCURRENTUP-TO-DATEAVAILABLEAGEnginx11111m[root@ku8-1tmp]#1234567891011kubectleditedit這條命令用于編輯服務(wù)器上的資源,具體是什么意思,可以通過如下使用方式來確認(rèn)。編輯對(duì)象確認(rèn)使用-o參數(shù)指定輸出格式為yaml的nginx的service的設(shè)定情況確認(rèn),取得現(xiàn)場(chǎng)情況,這也是我們不知道其yaml文件而只有環(huán)境時(shí)候能做的事情。[root@ku8-1tmp]#kubectlgetservice|grepnginxnginx12<nodes>80:31001/TCP2m[root@ku8-1tmp]#kubectlgetservicenginx-oyamlapiVersion:v1kind:Servicemetadata:creationTimestamp:2017-06-30T04:50:44Zlabels:name:nginxname:nginxnamespace:defaultresourceVersion:"77068"selfLink:/api/v1/namespaces/default/services/nginxuid:ad45612a-5d4f-11e7-91ef-000c2933b773spec:clusterIP:12ports:-nodePort:31001port:80protocol:TCPtargetPort:80selector:name:nginxsessionAffinity:Nonetype:NodePortstatus:loadBalancer:{}[root@ku8-1tmp]#12345678910111213141516171819202122232425262728使用edit命令對(duì)nginx的service設(shè)定進(jìn)行編輯,得到如下信息可以看到當(dāng)前端口為31001,在此編輯中,我們把它修改為31002[root@ku8-1tmp]#kubectleditservicenginxservice"nginx"edited[root@ku8-1tmp]#123編輯之后確認(rèn)結(jié)果發(fā)現(xiàn),此服務(wù)端口已經(jīng)改變[root@ku8-1tmp]#kubectlgetserviceNAMECLUSTER-IPEXTERNAL-IP

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論