Kubectl 命令详解

kubectl describe命令:

输出指定的一个或多个资源的详细信息

语法:

1
kubectl describe (-f FILENAME | TYPE [NAME_PREFIX | -l label] | TYPE/NAME) [options]

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 查看一个node
kubectl describe nodes master

# 查看一个pod
kubectl describe pods/nginx

# 查看pod.json中的资源类型和名称指定的pod
kubectl describe -f pod.json

# 查看所有的pod
kubectl describe pods

# 查看所有包含label name=myLabel的pod
kubectl describe po -l name=myLabel

# 查看deployments副本控制中被名为nginx管理的pod
kubectl describe pods nginx -n kube-system

# 查看kube-system名称空间service中名称为ye-nginx-service的详细信息
kubectl describe svc/ye-nginx-service -n kube-system

kubectl run 命令:

  • 创建并运行一个或多个容器镜像。
  • 创建一个deployment 或job 来管理容器。

语法:

1
2
kubectl run NAME --image=image [--env="key=value"] [--port=port] [--replicas=replicas] [--dry-run=bool]
[--overrides=inline-json] [--command] -- [COMMAND] [args...] [options]

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
启动nginx实例,默认是创建在default名称空间
kubectl run nginx --image=nginx

创建到指定的kube-system空间中
kubectl run nginx --image=nginx:1.8 --replicas=5 -l name=nginx -n kube-system

启动hazelcast实例,暴露容器端口 5701。
kubectl run hazelcast --image=hazelcast --port=5701

启动nginx实例,设置副本数5。
kubectl run nginx --image=nginx --replicas=5

启动一个名为busybox的实例,镜像busybox,并且进入容器内。
kubectl run -i -t busybox --image=busybox --restart=Never

kubectl delete 命令:

通过文件名、控制台输入、资源名或者label selector删除资源。接受JSON和YAML格式的描述文件。

只能指定以下参数类型中的一种:文件名、资源类型和名称、资源类型和label selector。 注意:delete命令不检查资源版本,如果有人在你进行删除操作的同时进行更新操作,他所做的更新将随资源同时被删除。

语法:

1
kubectl delete ([-f FILENAME] | TYPE [(NAME | -l label | --all)]) [options]

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
使用 pod.json中指定的资源类型和名称删除pod。
kubectl delete -f ./pod.json

根据传入stdin的JSON所指定的类型和名称删除pod。
cat pod.json | kubectl delete -f -

删除名为“baz”和“foo”的Pod和Service。
kubectl delete pod,service baz foo

删除 Label name = myLabel的pod和Service。
kubectl delete pods,services -l name=myLabel

强制删除dead node上的pod
kubectl delete pod foo --grace-period=0 --force

删除所有pod
kubectl delete pods --all

删除deployments控制器中名字为nginx
kubectl delete deployments nginx

删除kube-system名称空间中的nginx
kubectl delete deployments nginx -n kube-system

默认情况下,所有删除在30秒内都是正常的。
kubectl delete命令支持-grace-period = <seconds> 选项,该选项允许用户覆盖默认值并指定自己的值。值0强制删除pod.
kubectl version> = 1.5中,必须指定一个附加标志--force以及--grace-period = 0才能执行强制删除。

kubectl expose命令:

将资源暴露为新的Kubernetes Service。

语法:

1
2
kubectl expose (-f FILENAME | TYPE NAME) [--port=port] [--protocol=TCP|UDP] [--target-port=number-or-name]
[--name=name] [--external-ip=external-ip-of-service] [--type=type] [options]

示例:

1
2
3
4
5
6
7
8
为deployments的nginx创建service,并通过Service的80端口转发至容器的8000端口上。
kubectl expose rc nginx --port=80 --target-port=8000

由“nginx-controller.yaml”中指定的type和name标识的RC创建Service,并通过Service的80端口转发至容器的8000端口上。
kubectl expose -f nginx-controller.yaml --port=80 --target-port=8000

暴露指定空间中的资源,例如下面指定暴露kube-system中的nginx资源暴露service名称为ye-nginx-service暴露的端口是80,容器的端口也是80(target-port)。
kubectl expose deployments nginx --port=80 --protocol=TCP --target-port=80 --name=ye-nginx-service -n kube-system

kubectl get 命令:

获取列出一个或多个资源的信息。

可以使用的资源包括:

  • componentstatuses (缩写 cs)
  • deployments (缩写 deploy)
  • namespaces (缩写 ns)
  • nodes (缩写 no)
  • pods (缩写 po)
  • replicasets (缩写 rs)
  • services (缩写 svc)
1
kubectl get [(-o|--output=)json|yaml|wide|custom-columns=...|custom-columns-file=...|go-template=...|go-template-file=...|jsonpath=...|jsonpath-file=...] (TYPE[.VERSION][.GROUP] [NAME | -l label] | TYPE[.VERSION][.GROUP]/NAME ...) [flags] [options]

示例

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
列出所有运行的Pod信息。
kubectl get pods

列出Pod以及运行Pod节点信息。
kubectl get pods -o wide

列出Pod以及运行Pod节点信息以及labels信息。
kubectl get pods -o wide --show-labels

查看指定名称空间的详细信息
kubectl get pods -n kube-system -o wide

列出指定NAME的信息。
kubectl get deployments nginx -n kube-system

列出组件的状态信息
kubectl get cs

列出kubernetes名称空间
kubectl get ns

查看kubenetes节点信息
kubectl get nodes

查看default中的service服务
kubectl get svc

查看kube-system中的service服务
kubectl get svc -n kube-system

查看kubu-system中service服务的详细信息和label标签
kubectl get svc -n kube-system --show-labels -o wide

kubectl scale 命令:

扩容或缩容 Deployment、ReplicaSet、Replication Controller或 Job 中Pod数量。
scale也可以指定多个前提条件,如:当前副本数量或 –resource-version ,进行伸缩比例设置前,系统会先验证前提条件是否成立。

语法:

1
kubectl scale [--resource-version=version] [--current-replicas=count] --replicas=COUNT (-f FILENAME | TYPE NAME) [options]

示例:

1
2
3
4
5
6
7
8
将deployments副本控制器中名为nginx的pod副本数设置为3。
kubectl scale --replicas=3 deployments nginx -n kube-system

将由“foo.yaml”配置文件中指定的资源对象和名称标识的Pod资源副本设为3。
kubectl scale --replicas=3 -f foo.yaml

如果当前副本数为2,则将其扩展至3。
kubectl scale --current-replicas=2 --replicas=3 deployment/mysql

Kubectl 命令详解
https://system51.github.io/2019/08/23/Kubectl-Command-details/
作者
Mr.Ye
发布于
2019年8月23日
许可协议