Kubernetes之kubectl常用命令使用指南.docx
- 文档编号:8005856
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:72
- 大小:108.82KB
Kubernetes之kubectl常用命令使用指南.docx
《Kubernetes之kubectl常用命令使用指南.docx》由会员分享,可在线阅读,更多相关《Kubernetes之kubectl常用命令使用指南.docx(72页珍藏版)》请在冰豆网上搜索。
Kubernetes之kubectl常用命令使用指南
Kubernetes之kubectl常用命令使用指南:
1:
创建和删除
kubectl是一个用于操作kubernetes集群的命令行接口,通过利用kubectl的各种命令可以实现各种功能,是在使用kubernetes中非常常用的工具。
这里我们会通过一些简单的实例来展现其中一些高频命令的使用方法。
更为重要的是这些命令使用的场景以及能够解决什么样的问题。
这篇文章我们来介绍一下创建和删除相关的命令。
常用命令
kubectl创建和删除相关,本文将会简单介绍一下如下命令
项番
命令
说明
No.1
run
在集群上运行一个镜像
No.2
create
使用文件或者标准输入的方式创建一个资源
No.3
delete
使用文件或者标准输入以及资源名称或者标签选择器来删除某个资源
事前准备
版本
[root@ku8-1tmp]#kubectlversion
ClientVersion:
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]#
∙1
∙2
∙3
∙4
集群构成
一主三从的Kubernetes集群
项番
类型
Hostname
IP
No.1
Master
ku8-1
192.168.32.131
No.1
Node
ku8-2
192.168.32.132
No.1
Node
ku8-3
192.168.32.133
No.1
Node
ku8-4
192.168.32.134
[root@ku8-1tmp]#kubectlgetnodes
NAMESTATUSAGE
192.168.32.132Ready12m
192.168.32.133Ready11m
192.168.32.134Ready11m
[root@ku8-1tmp]#
∙1
∙2
∙3
∙4
∙5
∙6
kubectlrun
运行一个镜像
kubectlrun和dockerrun一样,它能将一个镜像运行起来,我们使用kubectlrun来将一个sonarqube的镜像启动起来。
[root@ku8-1tmp]#kubectlrunsonarqube--image=192.168.32.131:
5000/sonarqube:
5.6.5--replicas=1--port=9000
deployment"sonarqube"created
[root@ku8-1tmp]#
∙1
∙2
∙3
让我们来看看这条kubectlrun之后,kubernetes做了什么,从它的提示看到创建了一个deployment(1.4之后推荐的方式)。
确认Deployment
[root@ku8-1tmp]#kubectlgetdeployment
NAMEDESIREDCURRENTUP-TO-DATEAVAILABLEAGE
sonarqube11115m
[root@ku8-1tmp]#
∙1
∙2
∙3
∙4
确认pod
kubernetes将镜像运行在pod中以方便实施卷和网络共享等管理,使用getpods可以清楚的看到生成了一个pod
[root@ku8-1tmp]#kubectlgetpods
NAMEREADYSTATUSRESTARTSAGE
sonarqube-1880671902-s3fdq1/1Running06m
[root@ku8-1tmp]#
∙1
∙2
∙3
∙4
kubectldelete
让我们来试着使用kubectldelete删除一下这些创建的对象
删除pod
[root@ku8-1tmp]#kubectldeletepodssonarqube-1880671902-s3fdq
pod"sonarqube-1880671902-s3fdq"deleted
[root@ku8-1tmp]#
∙1
∙2
∙3
确认结果
可以看到刚刚生成的sonarqube-1880671902-s3fdq正在结束(Terminating),随之一个新的sonarqube-1880671902-n75d2正在创建,这是正是确保replicas为1的动作。
[root@ku8-1tmp]#kubectlgetpods
NAMEREADYSTATUSRESTARTSAGE
sonarqube-1880671902-n75d20/1ContainerCreating011s
sonarqube-1880671902-s3fdq0/1Terminating010m
[root@ku8-1tmp]#
∙1
∙2
∙3
∙4
∙5
再次确认
稍等之后再次确认,发现replicas仍然保持在1个的状态
[root@ku8-1tmp]#kubectlgetpods
NAMEREADYSTATUSRESTARTSAGE
sonarqube-1880671902-n75d21/1Running040s
[root@ku8-1tmp]#kubectlgetdeployments
NAMEDESIREDCURRENTUP-TO-DATEAVAILABLEAGE
sonarqube111115m
[root@ku8-1tmp]#
∙1
∙2
∙3
∙4
∙5
∙6
∙7
删除deployment
直接删除pod触发了replicas的确保机制,那么我们删除deployment
[root@ku8-1tmp]#kubectldeletedeploymentsonarqube
deployment"sonarqube"deleted
[root@ku8-1tmp]#
∙1
∙2
∙3
结果确认
通过使用deployment进行删除,则全部删除。
[root@ku8-1tmp]#kubectlgetpods
Noresourcesfound.
[root@ku8-1tmp]#kubectlgetdeployments
Noresourcesfound.
[root@ku8-1tmp]#
∙1
∙2
∙3
∙4
∙5
kubectlcreate
使用kubectlrun在设定很复杂的时候需要非常长的一条语句,敲半天也很容易出错,也没法保存,在碰到转义字符的时候也经常会很抓狂,所以更多场景下会使用yaml或者json文件,而使用kubectlcreate或者delete就可以利用这些yaml文件。
比如,我们使用如下的方式来分别创建mysql和sonarqube的RC。
事前准备
[root@ku8-1tmp]#lsyamls
mysql.yamlsonar.yaml
[root@ku8-1tmp]#catyamls/mysql.yaml
---
kind:
ReplicationController
apiVersion:
v1
metadata:
name:
mysql
spec:
replicas:
1
selector:
name:
mysql
template:
metadata:
labels:
name:
mysql
spec:
containers:
-name:
mysql
image:
192.168.32.131:
5000/mysql:
5.7.16
ports:
-containerPort:
3306
protocol:
TCP
env:
-name:
MYSQL_ROOT_PASSWORD
value:
"hello123"
[root@ku8-1tmp]#
[root@ku8-1tmp]#catyamls/sonar.yaml
---
kind:
ReplicationController
apiVersion:
v1
metadata:
name:
sonarqube
spec:
replicas:
1
selector:
name:
sonarqube
template:
metadata:
labels:
name:
sonarqube
spec:
containers:
-name:
sonarqube
image:
192.168.32.131:
5000/sonarqube:
5.6.5
ports:
-containerPort:
9000
protocol:
TCP
[root@ku8-1tmp]#
∙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
∙29
∙30
∙31
∙32
∙33
∙34
∙35
∙36
∙37
∙38
∙39
∙40
∙41
∙42
∙43
∙44
∙45
∙46
∙47
∙48
∙49
创建(MYSQL)
[root@ku8-1tmp]#kubectlcreate-fyamls/mysql.yaml
replicationcontroller"mysql"created
[root@ku8-1tmp]#
∙1
∙2
∙3
确认(MYSQL)
[root@ku8-1tmp]#kubectlgetrc
NAMEDESIREDCURRENTREADYAGE
mysql1111m
[root@ku8-1tmp]#kubectlgetpod
NAMEREADYSTATUSRESTARTSAGE
mysql-nl8sq1/1Running01m
[root@ku8-1tmp]#
∙1
∙2
∙3
∙4
∙5
∙6
∙7
创建(SONARQUBE)
[root@ku8-1tmp]#kubectlcreate-fyamls/sonar.yaml
replicationcontroller"sonarqube"created
[root@ku8-1tmp]#
∙1
∙2
∙3
确认(SONARQUBE)
[root@ku8-1tmp]#kubectlgetpods
NAMEREADYSTATUSRESTARTSAGE
mysql-nl8sq1/1Running02m
sonarqube-p1cnj1/1Running046s
[root@ku8-1tmp]#kubectlgetrc
NAMEDESIREDCURRENTREADYAGE
mysql1112m
sonarqube11151s
[root@ku8-1tmp]#
∙1
∙2
∙3
∙4
∙5
∙6
∙7
∙8
∙9
删除(SONARQUBE)
使用yaml文件也可以直接删除所创建出来的内容,比如我们先删除刚刚创建的sonarqube相关。
[root@ku8-1tmp]#kubectldelete-fyamls/sonar.yaml
replicationcontroller"sonarqube"deleted
[root@ku8-1tmp]#
∙1
∙2
∙3
确认(SONARQUBE)
[root@ku8-1tmp]#kubectlgetpods
NAMEREADYSTATUSRESTARTSAGE
mysql-nl8sq1/1Running04m
[root@ku8-1tmp]#kubectlgetrc
NAMEDESIREDCURRENTREADYAGE
mysql1114m
[root@ku8-1tmp]#
∙1
∙2
∙3
∙4
∙5
∙6
∙7
删除(MYSQL)
[root@ku8-1tmp]#kubectldelete-fyamls/mysql.yaml
replicationcontroller"mysql"deleted
[root@ku8-1tmp]#
∙1
∙2
∙3
确认(MYSQL)
[root@ku8-1tmp]#kubectlgetpods
Noresourcesfound.
[root@ku8-1tmp]#kubectlgetrc
Noresourcesfound.
[root@ku8-1tmp]#
∙1
∙2
∙3
∙4
∙5
Deployment方式:
准备
RC在1.4之后已经被建议用Deployment方式替换,主要只需要替换kind和apiversion和selector即可,1.5和1.6在此处也略有区别。
[root@ku8-1tmp]#lsyamls/
mysql.yamlsonar.yaml
[root@ku8-1tmp]#catyamls/mysql.yaml
---
kind:
Deployment
apiVersion:
extensions/v1beta1
metadata:
name:
mysql
spec:
replicas:
1
template:
metadata:
labels:
name:
mysql
spec:
containers:
-name:
mysql
image:
192.168.32.131:
5000/mysql:
5.7.16
ports:
-containerPort:
3306
protocol:
TCP
env:
-name:
MYSQL_ROOT_PASSWORD
value:
"hello123"
[root@ku8-1tmp]#
[root@ku8-1tmp]#catyamls/sonar.yaml
---
kind:
Deployment
apiVersion:
extensions/v1beta1
metadata:
name:
sonarqube
spec:
replicas:
1
template:
metadata:
labels:
name:
sonarqube
spec:
containers:
-name:
sonarqube
image:
192.168.32.131:
5000/sonarqube:
5.6.5
ports:
-containerPort:
9000
protocol:
TCP
[root@ku8-1tmp]#
∙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
∙29
∙30
∙31
∙32
∙33
∙34
∙35
∙36
∙37
∙38
∙39
∙40
∙41
∙42
∙43
∙44
∙45
创建
有多个yaml文件的时候,可以使用如下方式一下全部创建
[root@ku8-1tmp]#kubectlcreate-fyamls/
deployment"mysql"created
deployment"sonarqube"created
[root@ku8-1tmp]#
∙1
∙2
∙3
∙4
确认
[root@ku8-1tmp]#kubectlgetpods
NAMEREADYSTATUSRESTARTSAGE
mysql-478535978-2l7kq1/1Running03m
sonarqube-3574384362-x3mg21/1Running03m
[root@ku8-1tmp]#kubectlgetdeployments
NAMEDESIREDCURRENTUP-TO-DATEAVAILABLEAGE
mysql11113m
sonarqube11113m
[root@ku8-1tmp]#
∙1
∙2
∙3
∙4
∙5
∙6
∙7
∙8
∙9
删除
同样,有多个yaml文件的时候,可以使用如下方式一下全部删除
[root@ku8-1tmp]#kubectldelete-fyamls/
deployment"mysql"deleted
deployment"sonarqube"deleted
[root@ku8-1tmp]#
∙1
∙2
∙3
∙4
确认
[root@ku8-1tmp]#kubectlgetpods
Noresourcesfound.
[root@ku8-1tmp]#kubectlgetdeployments
Noresourcesfound.
[root@ku8-1tmp]#
∙1
∙2
∙3
∙4
∙5
总结
这篇文章通过几个最简单的命令熟悉了如何使用kubectl对镜像进行创建和删除,在后面我们会进一步介绍一些常用的命令。
Kubernetes之kubectl常用命令使用指南:
2:
故障排查
kubectl是一个用于操作kubernetes集群的命令行接口,通过利用kubectl的各种命令可以实现各种功能,是在使用kubernetes中非常常用的工具。
这里我们会通过一些简单的实例来展现其中一些高频命令的使用方法。
更为重要的是这些命令使用的场景以及能够解决什么样的问题。
上篇文章我们介绍了创建和删除相关的几条命令,这篇文章我们来看一下出现问题时最常用的另外九条命令。
常用命令
kubectl故障排查相关,本文将会简单介绍一下如下命令
项番
命令
说明
No.1
version
显示客户端和服务器侧版本信息
No.2
api-versions
以group/version的格式显示服务器侧所支持的API版本
No.3
explain
显示资源文档信息
No.4
get
取得确认对象信息列表
No.5
describe
取得确认对象的详细信息
No.6
logs
取得pod中容器的log信息
No.7
exec
在容器中执行一条命令
No.8
cp
从容器考出或向容器考入文件
No.9
attach
Attach到一个运行中的容器上
事前准备
kubectlversion
version命令用于确认客户端和服务器侧的版本信息,不同的版本的情况变化可能很大,所以故障排除时首先也需要确认的是现场环境的版本信息。
从下面可以清楚地看到,本文验证时所使用的版本为1.5.2
[root@ku8-1tmp]#kubectlversion
ClientVersion:
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]#
∙1
∙2
∙3
∙4
集群构成
一主三从的Kubernetes集群
项番
类型
Hostname
IP
No.1
Master
ku8-1
192.168.32.131
No.1
Node
ku8-2
192.168.32.132
No.1
Node
ku8-3
192.168.32.133
No.1
Node
ku8-4
192.168.32.134
[root@ku8-1tmp]#kubectlgetnodes
NAMESTATUSAGE
192.168.32.132Ready12m
192.168.32.133Ready11m
192.168.32.134Ready11m
[root@ku8-1tmp]#
∙1
∙2
∙3
∙4
∙5
∙6
kubectlapi-versions
使用api-versions命令可以列出当前版本的kubernetes的服务器端所支持的api版本信息。
[root@ku8-1tmp]#kubectlapi-versions
apps/v1beta1
authentication.k8s.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Kubernetes kubectl 常用命令 使用指南