delete kubectl pod_Kubernetes之kubectl常用命令使用指南:1:创建和删除

09e1cb037b4025b14f33d9abf4ce1688.png

kubectl是一个用于操作kubernetes集群的命令行接口,通过利用kubectl的各种命令可以实现各种功能,是在使用kubernetes中非常常用的工具。这里我们会通过一些简单的实例来展现其中一些高频命令的使用方法。

更为重要的是这些命令使用的场景以及能够解决什么样的问题。这篇文章我们来介绍一下创建和删除相关的命令。

常用命令

kubectl创建和删除相关,本文将会简单介绍一下如下命令

项番

命令

说明

No.1

run

在集群上运行一个镜像

No.2

create

使用文件或者标准输入的方式创建一个资源

No.3

delete

使用文件或者标准输入以及资源名称或者标签选择器来删除某个资源

事前准备

版本

[root@ku8-1 tmp]# kubectl version

Client Version: 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"}

Server Version: 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-1 tmp]#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-1 tmp]# kubectl get nodes

NAME STATUS AGE

192.168.32.132 Ready 12m

192.168.32.133 Ready 11m

192.168.32.134 Ready 11m

[root@ku8-1 tmp]#1

2

3

4

5

6

kubectl run

运行一个镜像

kubectl run和docker run一样,它能将一个镜像运行起来,我们使用kubectl run来将一个sonarqube的镜像启动起来。

[root@ku8-1 tmp]# kubectl run sonarqube --image=192.168.32.131:5000/sonarqube:5.6.5 --replicas=1 --port=9000

deployment "sonarqube" created

[root@ku8-1 tmp]#1

2

3

让我们来看看这条kubectl run之后,kubernetes做了什么,从它的提示看到创建了一个deployment(1.4之后推荐的方式)。

确认Deployment

[root@ku8-1 tmp]# kubectl get deployment

NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE

sonarqube 1 1 1 1 5m

[root@ku8-1 tmp]#1

2

3

4

确认pod

kubernetes将镜像运行在pod中以方便实施卷和网络共享等管理,使用get pods可以清楚的看到生成了一个pod

[root@ku8-1 tmp]# kubectl get pods

NAME READY STATUS RESTARTS AGE

sonarqube-1880671902-s3fdq 1/1 Running 0 6m

[root@ku8-1 tmp]#1

2

3

4

kubectl delete

让我们来试着使用kubectl delete删除一下这些创建的对象

删除pod

[root@ku8-1 tmp]# kubectl delete pods sonarqube-1880671902-s3fdq

pod "sonarqube-1880671902-s3fdq" deleted

[root@ku8-1 tmp]#1

2

3

确认结果

可以看到刚刚生成的sonarqube-1880671902-s3fdq正在结束(Terminating),随之一个新的sonarqube-1880671902-n75d2正在创建,这是正是确保replicas为1的动作。

[root@ku8-1 tmp]# kubectl get pods

NAME READY STATUS RESTARTS AGE

sonarqube-1880671902-n75d2 0/1 ContainerCreating 0 11s

sonarqube-1880671902-s3fdq 0/1 Terminating 0 10m

[root@ku8-1 tmp]#1

2

3

4

5

再次确认

稍等之后再次确认,发现replicas仍然保持在1个的状态

[root@ku8-1 tmp]# kubectl get pods

NAME READY STATUS RESTARTS AGE

sonarqube-1880671902-n75d2 1/1 Running 0 40s

[root@ku8-1 tmp]# kubectl get deployments

NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE

sonarqube 1 1 1 1 15m

[root@ku8-1 tmp]#1

2

3

4

5

6

7

删除deployment

直接删除pod触发了replicas的确保机制,那么我们删除deployment

[root@ku8-1 tmp]# kubectl delete deployment sonarqube

deployment "sonarqube" deleted

[root@ku8-1 tmp]#1

2

3

结果确认

通过使用deployment进行删除,则全部删除。

[root@ku8-1 tmp]# kubectl get pods

No resources found.

[root@ku8-1 tmp]# kubectl get deployments

No resources found.

[root@ku8-1 tmp]#1

2

3

4

5

kubectl create

使用kubectl run在设定很复杂的时候需要非常长的一条语句,敲半天也很容易出错,也没法保存,在碰到转义字符的时候也经常会很抓狂,所以更多场景下会使用yaml或者json文件,而使用kubectl create或者delete就可以利用这些yaml文件。

比如,我们使用如下的方式来分别创建mysql和sonarqube的RC。

事前准备

[root@ku8-1 tmp]# ls yamls

mysql.yaml sonar.yaml

[root@ku8-1 tmp]# cat yamls/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-1 tmp]#

[root@ku8-1 tmp]# cat yamls/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-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

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

创建(MYSQL)

[root@ku8-1 tmp]# kubectl create -f yamls/mysql.yaml

replicationcontroller "mysql" created

[root@ku8-1 tmp]#1

2

3

确认(MYSQL)

[root@ku8-1 tmp]# kubectl get rc

NAME DESIRED CURRENT READY AGE

mysql 1 1 1 1m

[root@ku8-1 tmp]# kubectl get pod

NAME READY STATUS RESTARTS AGE

mysql-nl8sq 1/1 Running 0 1m

[root@ku8-1 tmp]#1

2

3

4

5

6

7

创建(SONARQUBE)

[root@ku8-1 tmp]# kubectl create -f yamls/sonar.yaml

replicationcontroller "sonarqube" created

[root@ku8-1 tmp]#1

2

3

确认(SONARQUBE)

[root@ku8-1 tmp]# kubectl get pods

NAME READY STATUS RESTARTS AGE

mysql-nl8sq 1/1 Running 0 2m

sonarqube-p1cnj 1/1 Running 0 46s

[root@ku8-1 tmp]# kubectl get rc

NAME DESIRED CURRENT READY AGE

mysql 1 1 1 2m

sonarqube 1 1 1 51s

[root@ku8-1 tmp]#1

2

3

4

5

6

7

8

9

删除(SONARQUBE)

使用yaml文件也可以直接删除所创建出来的内容,比如我们先删除刚刚创建的sonarqube相关。

[root@ku8-1 tmp]# kubectl delete -f yamls/sonar.yaml

replicationcontroller "sonarqube" deleted

[root@ku8-1 tmp]#1

2

3

确认(SONARQUBE)

[root@ku8-1 tmp]# kubectl get pods

NAME READY STATUS RESTARTS AGE

mysql-nl8sq 1/1 Running 0 4m

[root@ku8-1 tmp]# kubectl get rc

NAME DESIRED CURRENT READY AGE

mysql 1 1 1 4m

[root@ku8-1 tmp]#1

2

3

4

5

6

7

删除(MYSQL)

[root@ku8-1 tmp]# kubectl delete -f yamls/mysql.yaml

replicationcontroller "mysql" deleted

[root@ku8-1 tmp]#1

2

3

确认(MYSQL)

[root@ku8-1 tmp]# kubectl get pods

No resources found.

[root@ku8-1 tmp]# kubectl get rc

No resources found.

[root@ku8-1 tmp]#1

2

3

4

5

Deployment方式:准备

RC在1.4之后已经被建议用Deployment方式替换,主要只需要替换kind和apiversion和selector即可,1.5和1.6在此处也略有区别。

[root@ku8-1 tmp]# ls yamls/

mysql.yaml sonar.yaml

[root@ku8-1 tmp]# cat yamls/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-1 tmp]#

[root@ku8-1 tmp]# cat yamls/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-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

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

创建

有多个yaml文件的时候,可以使用如下方式一下全部创建

[root@ku8-1 tmp]# kubectl create -f yamls/

deployment "mysql" created

deployment "sonarqube" created

[root@ku8-1 tmp]#1

2

3

4

确认

[root@ku8-1 tmp]# kubectl get pods

NAME READY STATUS RESTARTS AGE

mysql-478535978-2l7kq 1/1 Running 0 3m

sonarqube-3574384362-x3mg2 1/1 Running 0 3m

[root@ku8-1 tmp]# kubectl get deployments

NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE

mysql 1 1 1 1 3m

sonarqube 1 1 1 1 3m

[root@ku8-1 tmp]#1

2

3

4

5

6

7

8

9

删除

同样,有多个yaml文件的时候,可以使用如下方式一下全部删除

[root@ku8-1 tmp]# kubectl delete -f yamls/

deployment "mysql" deleted

deployment "sonarqube" deleted

[root@ku8-1 tmp]#1

2

3

4

确认

[root@ku8-1 tmp]# kubectl get pods

No resources found.

[root@ku8-1 tmp]# kubectl get deployments

No resources found.

[root@ku8-1 tmp]#1

2

3

4

5

总结

这篇文章通过几个最简单的命令熟悉了如何使用kubectl对镜像进行创建和删除,在后面我们会进一步介绍一些常用的命令。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值