Kubernetes之kubectl常用命令使用指南_第1页
Kubernetes之kubectl常用命令使用指南_第2页
Kubernetes之kubectl常用命令使用指南_第3页
Kubernetes之kubectl常用命令使用指南_第4页
Kubernetes之kubectl常用命令使用指南_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Kubernetes之kubectl常用命令使用指南:1:创建和删除kubectl是一个用于操作kubernetes集群的命令行接口,通过利用kubectl的各种命令可以实现各种功能,是在使用kubernetes中非常常用的工具。这里我们会通过一些简单的实例来展现其中一些高频命令的使用方法。 更为重要的是这些命令使用的场景以及能够解决什么样的问题。这篇文章我们来介绍一下创建和删除相关的命令。常用命令kubectl创建和删除相关,本文将会简单介绍一下如下命令项番命令说明No.1run在集群上运行一个镜像No.2create使用文件或者标准输入的方式创建一个资源No.3delete使用文

2、件或者标准输入以及资源名称或者标签选择器来删除某个资源事前准备版本rootku8-1 tmp# kubectl versionClient Version: version.InfoMajor:"1", Minor:"5", GitVersion:"v1.5.2", GitCommit:"08e099554f3c31f6e6f07b448ab3ed78d0520507", GitTreeState:"clean", BuildDate:"2017-01-12T04:57:25Z&quo

3、t;, GoVersion:"go1.7.4", Compiler:"gc", Platform:"linux/amd64"Server Version: version.InfoMajor:"1", Minor:"5", GitVersion:"v1.5.2", GitCommit:"08e099554f3c31f6e6f07b448ab3ed78d0520507", GitTreeState:"clean", BuildDate:&

4、quot;2017-01-12T04:52:34Z", GoVersion:"go1.7.4", Compiler:"gc", Platform:"linux/amd64"rootku8-1 tmp#· 1· 2· 3· 4集群构成一主三从的Kubernetes集群项番类型HostnameIPNo.1Masterku8-1No.1Nodeku8-2No.1Nodeku8-3No.1Nodeku8-4rootku8-1 tmp# kubectl get nodesNAME STATUS

5、AGE32 Ready 12m33 Ready 11m34 Ready 11mrootku8-1 tmp# · 1· 2· 3· 4· 5· 6kubectl run运行一个镜像kubectl run和docker run一样,它能将一个镜像运行起来,我们使用kubectl run来将一个sonarqube的镜像启动起来。rootku8-1 tmp# kubectl run sonarqube -image=31:5000/sonarqub

6、e:5.6.5 -replicas=1 -port=9000deployment "sonarqube" createdrootku8-1 tmp#· 1· 2· 3让我们来看看这条kubectl run之后,kubernetes做了什么,从它的提示看到创建了一个deployment(1.4之后推荐的方式)。确认Deploymentrootku8-1 tmp# kubectl get deploymentNAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGEsonarqube 1 1 1 1 5mrootku

7、8-1 tmp# · 1· 2· 3· 4确认podkubernetes将镜像运行在pod中以方便实施卷和网络共享等管理,使用get pods可以清楚的看到生成了一个podrootku8-1 tmp# kubectl get podsNAME READY STATUS RESTARTS AGEsonarqube-1880671902-s3fdq 1/1 Running 0 6mrootku8-1 tmp# · 1· 2· 3· 4kubectl delete让我们来试着使用kubectl delete删除一下这些创

8、建的对象删除podrootku8-1 tmp# kubectl delete pods sonarqube-1880671902-s3fdqpod "sonarqube-1880671902-s3fdq" deletedrootku8-1 tmp#· 1· 2· 3确认结果可以看到刚刚生成的sonarqube-1880671902-s3fdq正在结束(Terminating),随之一个新的sonarqube-1880671902-n75d2正在创建,这是正是确保replicas为1的动作。rootku8-1 tmp# kubectl get p

9、odsNAME READY STATUS RESTARTS AGEsonarqube-1880671902-n75d2 0/1 ContainerCreating 0 11ssonarqube-1880671902-s3fdq 0/1 Terminating 0 10mrootku8-1 tmp#· 1· 2· 3· 4· 5再次确认稍等之后再次确认,发现replicas仍然保持在1个的状态rootku8-1 tmp# kubectl get podsNAME READY STATUS RESTARTS AGEsonarqube-1880671

10、902-n75d2 1/1 Running 0 40srootku8-1 tmp# kubectl get deploymentsNAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGEsonarqube 1 1 1 1 15mrootku8-1 tmp#· 1· 2· 3· 4· 5· 6· 7删除deployment直接删除pod触发了replicas的确保机制,那么我们删除deploymentrootku8-1 tmp# kubectl delete deployment sonarq

11、ubedeployment "sonarqube" deletedrootku8-1 tmp#· 1· 2· 3结果确认通过使用deployment进行删除,则全部删除。rootku8-1 tmp# kubectl get podsNo resources found.rootku8-1 tmp# kubectl get deploymentsNo resources found.rootku8-1 tmp#· 1· 2· 3· 4· 5kubectl create使用kubectl run在设

12、定很复杂的时候需要非常长的一条语句,敲半天也很容易出错,也没法保存,在碰到转义字符的时候也经常会很抓狂,所以更多场景下会使用yaml或者json文件,而使用kubectl create或者delete就可以利用这些yaml文件。 比如,我们使用如下的方式来分别创建mysql和sonarqube的RC。事前准备rootku8-1 tmp# ls yamlsmysql.yaml sonar.yamlrootku8-1 tmp# cat yamls/mysql.yaml -kind: ReplicationControllerapiVersion: v1metadata: name: my

13、sqlspec: replicas: 1 selector: name: mysql template: metadata: labels: name: mysql spec: containers: - name: mysql image: :5000/mysql: ports: - containerPort: 3306 protocol: TCP env: - name: MYSQL_ROOT_PASSWORD value: "hello123"rootku8-1 tmp# rootku8-1 tmp# cat yamls/sonar.yaml -kind: Repl

14、icationControllerapiVersion: v1metadata: name: sonarqubespec: replicas: 1 selector: name: sonarqube template: metadata: labels: name: sonarqube spec: containers: - name: sonarqube image: :5000/sonarqube: ports: - containerPort: 9000 protocol: TCProotku8-1 tmp# · 1· 2· 3· 4·

15、5· 6· 7· 8· 9· 10· 11· 12· 13· 14· 15· 16· 17· 18· 19· 20· 21· 22· 23· 24· 25· 26· 27· 28· 29· 30· 31· 32· 33· 34· 35· 36· 37· 38·

16、 39· 40· 41· 42· 43· 44· 45· 46· 47· 48· 49创建(MYSQL)rootku8-1 tmp# kubectl create -f yamls/mysql.yaml replicationcontroller "mysql" createdrootku8-1 tmp#· 1· 2· 3确认(MYSQL)rootku8-1 tmp# kubectl get rcNAME DESIRED CURRENT READ

17、Y AGEmysql 1 1 1 1mrootku8-1 tmp# kubectl get podNAME READY STATUS RESTARTS AGEmysql-nl8sq 1/1 Running 0 1mrootku8-1 tmp# · 1· 2· 3· 4· 5· 6· 7创建(SONARQUBE)rootku8-1 tmp# kubectl create -f yamls/sonar.yaml replicationcontroller "sonarqube" createdrootku8-

18、1 tmp# · 1· 2· 3确认(SONARQUBE)rootku8-1 tmp# kubectl get podsNAME READY STATUS RESTARTS AGEmysql-nl8sq 1/1 Running 0 2msonarqube-p1cnj 1/1 Running 0 46srootku8-1 tmp# kubectl get rcNAME DESIRED CURRENT READY AGEmysql 1 1 1 2msonarqube 1 1 1 51srootku8-1 tmp# · 1· 2· 3

19、83; 4· 5· 6· 7· 8· 9删除(SONARQUBE)使用yaml文件也可以直接删除所创建出来的内容,比如我们先删除刚刚创建的sonarqube相关。rootku8-1 tmp# kubectl delete -f yamls/sonar.yaml replicationcontroller "sonarqube" deletedrootku8-1 tmp# · 1· 2· 3确认(SONARQUBE)rootku8-1 tmp# kubectl get podsNAME READY

20、 STATUS RESTARTS AGEmysql-nl8sq 1/1 Running 0 4mrootku8-1 tmp# kubectl get rcNAME DESIRED CURRENT READY AGEmysql 1 1 1 4mrootku8-1 tmp# · 1· 2· 3· 4· 5· 6· 7删除(MYSQL)rootku8-1 tmp# kubectl delete -f yamls/mysql.yaml replicationcontroller "mysql" deletedro

21、otku8-1 tmp#· 1· 2· 3确认(MYSQL)rootku8-1 tmp# kubectl get podsNo resources found.rootku8-1 tmp# kubectl get rcNo resources found.rootku8-1 tmp#· 1· 2· 3· 4· 5Deployment方式:准备RC在1.4之后已经被建议用Deployment方式替换,主要只需要替换kind和apiversion和selector即可,1.5和1.6在此处也略有区别。rootku8-1

22、 tmp# ls yamls/mysql.yaml sonar.yamlrootku8-1 tmp# cat yamls/mysql.yaml -kind: DeploymentapiVersion: extensions/v1beta1metadata: name: mysqlspec: replicas: 1 template: metadata: labels: name: mysql spec: containers: - name: mysql image: :5000/mysql: ports: - containerPort: 3306 protocol: TCP env: -

23、name: MYSQL_ROOT_PASSWORD value: "hello123"rootku8-1 tmp# rootku8-1 tmp# cat yamls/sonar.yaml -kind: DeploymentapiVersion: extensions/v1beta1metadata: name: sonarqubespec: replicas: 1 template: metadata: labels: name: sonarqube spec: containers: - name: sonarqube image: :5000/sonarqube: po

24、rts: - containerPort: 9000 protocol: TCProotku8-1 tmp# · 1· 2· 3· 4· 5· 6· 7· 8· 9· 10· 11· 12· 13· 14· 15· 16· 17· 18· 19· 20· 21· 22· 23· 24· 25· 26· 27· 28&#

25、183; 29· 30· 31· 32· 33· 34· 35· 36· 37· 38· 39· 40· 41· 42· 43· 44· 45创建有多个yaml文件的时候,可以使用如下方式一下全部创建rootku8-1 tmp# kubectl create -f yamls/deployment "mysql" createddeployment "sonarqube" createdrootk

26、u8-1 tmp# · 1· 2· 3· 4确认rootku8-1 tmp# kubectl get podsNAME READY STATUS RESTARTS AGEmysql-478535978-2l7kq 1/1 Running 0 3msonarqube-3574384362-x3mg2 1/1 Running 0 3mrootku8-1 tmp# kubectl get deploymentsNAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGEmysql 1 1 1 1 3msonarqube 1 1 1

27、 1 3mrootku8-1 tmp#· 1· 2· 3· 4· 5· 6· 7· 8· 9删除同样,有多个yaml文件的时候,可以使用如下方式一下全部删除rootku8-1 tmp# kubectl delete -f yamls/deployment "mysql" deleteddeployment "sonarqube" deletedrootku8-1 tmp# · 1· 2· 3· 4确认rootku8-1 tmp

28、# kubectl get podsNo resources found.rootku8-1 tmp# kubectl get deploymentsNo resources found.rootku8-1 tmp#· 1· 2· 3· 4· 5总结这篇文章通过几个最简单的命令熟悉了如何使用kubectl对镜像进行创建和删除,在后面我们会进一步介绍一些常用的命令。Kubernetes之kubectl常用命令使用指南:2:故障排查kubectl是一个用于操作kubernetes集群的命令行接口,通过利用kubectl的各种命令可以实现各种功能,是

29、在使用kubernetes中非常常用的工具。这里我们会通过一些简单的实例来展现其中一些高频命令的使用方法。 更为重要的是这些命令使用的场景以及能够解决什么样的问题。上篇文章我们介绍了创建和删除相关的几条命令,这篇文章我们来看一下出现问题时最常用的另外九条命令。常用命令kubectl故障排查相关,本文将会简单介绍一下如下命令项番命令说明No.1version显示客户端和服务器侧版本信息No.2api-versions以group/version的格式显示服务器侧所支持的API版本No.3explain显示资源文档信息No.4get取得确认对象信息列表No.5describe取得确认对象

30、的详细信息No.6logs取得pod中容器的log信息No.7exec在容器中执行一条命令No.8cp从容器考出或向容器考入文件No.9attachAttach到一个运行中的容器上事前准备kubectl versionversion命令用于确认客户端和服务器侧的版本信息,不同的版本的情况变化可能很大,所以故障排除时首先也需要确认的是现场环境的版本信息。 从下面可以清楚地看到,本文验证时所使用的版本为rootku8-1 tmp# kubectl versionClient Version: version.InfoMajor:"1", Minor:"5&q

31、uot;, GitVersion:"v1.5.2", GitCommit:"08e099554f3c31f6e6f07b448ab3ed78d0520507", GitTreeState:"clean", BuildDate:"2017-01-12T04:57:25Z", GoVersion:"go1.7.4", Compiler:"gc", Platform:"linux/amd64"Server Version: version.InfoMajor:&

32、quot;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"rootku

33、8-1 tmp#· 1· 2· 3· 4集群构成一主三从的Kubernetes集群项番类型HostnameIPNo.1Masterku8-1No.1Nodeku8-2No.1Nodeku8-3No.1Nodeku8-4rootku8-1 tmp# kubectl get nodesNAME STATUS AGE32 Ready 12m33 Ready 11m34 Ready 11mrootku8-1 tmp# · 1· 2· 3· 4·

34、; 5· 6kubectl api-versions使用api-versions命令可以列出当前版本的kubernetes的服务器端所支持的api版本信息。rootku8-1 tmp# kubectl api-versionsapps/v1beta1authentication.k8s.io/v1beta1authorization.k8s.io/v1beta1autoscaling/v1batch/v1certificates.k8s.io/v1alpha1extensions/v1beta1policy/v1beta1rbac.authorization.k8s.io/v1alp

35、ha1storage.k8s.io/v1beta1v1rootku8-1 tmp#· 1· 2· 3· 4· 5· 6· 7· 8· 9· 10· 11· 12· 13kubectl explain使用kubectl explain可以和kubectl help一样进行辅助的功能确认,使用它可以了解各个部分的说明和组成部分。比如如下可以看到对rc的说明,在故障排除时作用并不具有太大作用,到是可以多读读加深一下对各个部分的理解。rootku8-1 # kubectl

36、explain rcDESCRIPTION:ReplicationController represents the configuration of a replication controller.FIELDS: apiVersion <string> APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject u

37、nrecognized values. More info: http:/releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources kind <string> Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase

38、. More info: http:/releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds metadata <Object> If the Labels of a ReplicationController are empty, they are defaulted to be the same as the Pod(s) that the replication controller manages. Standard object's metadata. More info: http:/rele

39、ases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata spec <Object> Spec defines the specification of the desired behavior of the replication controller. More info: http:/releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status status <Object> Status is the most recently obse

40、rved status of the replication controller. This data may be out of date by some window of time. Populated by the system. Read-only. More info: http:/releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-statusrootku8-1 # · 1· 2· 3· 4· 5· 6· 7· 8· 9&

41、#183; 10· 11· 12· 13· 14· 15· 16· 17· 18· 19· 20· 21· 22· 23· 24· 25· 26· 27· 28· 29· 30· 31· 32· 33· 34· 35· 36explain命令能够确认的信息类别其所能支持的类别如下:类别clusters (仅对federation apis

42、ervers有效)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 (缩写

43、 pv)pods (缩写 po)podsecuritypolicies (缩写 psp)podtemplatesreplicasets (缩写 rs)replicationcontrollers (缩写 rc)resourcequotas (缩写 quota)secretsserviceaccounts (缩写 sa)services (缩写 svc)statefulsetsstorageclassesthirdpartyresources事前准备剩下的一些命令需要事前作一些准备,我们还是用上篇文章所用的yaml文件创建mysql和sonarqube的Deployment和pod。yaml文件

44、准备rootku8-1 tmp# ls yamlsmysql.yaml sonar.yamlrootku8-1 tmp# cat yamls/mysql.yaml -kind: DeploymentapiVersion: extensions/v1beta1metadata: name: mysqlspec: replicas: 1 template: metadata: labels: name: mysql spec: containers: - name: mysql image: :5000/mysql: ports: - containerPort: 3306 protocol: T

45、CP env: - name: MYSQL_ROOT_PASSWORD value: "hello123"rootku8-1 tmp# cat yamls/sonar.yaml -kind: DeploymentapiVersion: extensions/v1beta1metadata: name: sonarqubespec: replicas: 1 template: metadata: labels: name: sonarqube spec: containers: - name: sonarqube image: :5000/sonarqube: ports:

46、- containerPort: 9000 protocol: TCProotku8-1 tmp# · 1· 2· 3· 4· 5· 6· 7· 8· 9· 10· 11· 12· 13· 14· 15· 16· 17· 18· 19· 20· 21· 22· 23· 24· 25· 26· 27· 28·

47、29· 30· 31· 32· 33· 34· 35· 36· 37· 38· 39· 40· 41· 42· 43· 44启动rootku8-1 tmp# kubectl create -f yamls/deployment "mysql" createddeployment "sonarqube" createdrootku8-1 tmp# · 1· 2· 3·

48、4kubectl get使用get命令确认所创建出来的pod和deployment的信息确认pod可以看到创建出来的pod的所有信息,也可以使用Kubectl get po进行确认rootku8-1 tmp# kubectl get podsNAME READY STATUS RESTARTS AGEmysql-478535978-1dnm2 1/1 Running 0 34ssonarqube-3574384362-m7mdq 1/1 Running 0 34srootku8-1 tmp# · 1· 2· 3· 4· 5确认deploymen

49、t可以看到创建出来的deployment的所有信息rootku8-1 tmp# kubectl get deploymentsNAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGEmysql 1 1 1 1 41ssonarqube 1 1 1 1 41srootku8-1 tmp#· 1· 2· 3· 4· 5如果希望得到更加详细一点的信息,可以加上-o wide参数,比如对pods可以看到此pod在哪个node上运行,此pod的集群IP是多少也被一并显示了rootku8-1 tmp# kubectl ge

50、t pods -o wideNAME READY STATUS RESTARTS AGE IP NODEmysql-478535978-1dnm2 1/1 Running 0 2m 33sonarqube-3574384362-m7mdq 1/1 Running 0 2m 34rootku8-1 tmp#· 1· 2· 3· 4· 5确认node信息显示node的信息rootku8-1 tmp# kubectl get nodes -o wide

51、NAME STATUS AGE EXTERNAL-IP192 Ready 6h <none>192 Ready 6h <none>192 Ready 6h <none>rootku8-1 tmp#· 1· 2· 3· 4· 5· 6确认namespace信息列出所有的namespacerootku8-1 tmp# kubectl get namespacesNAME STATUS AGEdefault Active 6hkube-system Active 6hrootku8-1 tmp# 

52、3; 1· 2· 3· 4· 5get命令能够确认的信息类别使用node/pod/event/namespaces等结合起来,能够获取集群基本信息和状况, 其所能支持的类别如下:类别clusters (仅对federation apiservers有效)componentstatuses (缩写 cs)configmaps (缩写 cm)daemonsets (缩写 ds)deployments (缩写 deploy)endpoints (缩写 ep)events (缩写 ev)horizontalpodautoscalers (缩写 hpa)ingre

53、sses (缩写 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)statefulse

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论