kubectl应用

kubectl用法概述

kubectl命令语法

# kubectl [command] [TYPE] [NAME] [flags]

其中,command、TYPE、NAME、flags的含义如下。

(1)command:子命令,用于操作Kubernetes集群资源对象的命令,例如create、delete、describe、get、apply等。
(2)TYPE:资源对象的类型,区分大小写,能以单数形式、复数形式或者简写形式表示。例如以下3种TYPE是等价的。

# kubectl get pod pod1
# kubectl get pods pod1
# kubectl get po pod1

3)NAME:资源对象的名称,区分大小写。如果不指定名称,则系统将返回属于TYPE的全部对象的列表,例如$ kubectl get pods将返回所有Pod的列表。
(4)flags:kubectl子命令的可选参数,例如使用“-s”指定apiserver的URL地址而不用默认值。

在一个命令行中也可以同时对多个资源对象进行操作,以多个TYPE和NAME的组合表示,示例如下。

获取多个Pod的信息

# kubectl get pods pod1 pod2

同时应用多个yaml文件,以多个-f file参数表示

# kubectl get pod -f pod1.yaml -f pod2.yaml
# kubectl create -f pod1.yaml -f rc1.yaml -f service1.yaml

kubectl输出格式

kubectl 命令可以用多种格式对结果进行显示,输出的格式通过-o参数指定:

# kubectl [command] [TYPE] [NAME] -o=<output_format>

常用的输出格式如下:

(1)显示Pod更多信息

**# kubectl get pod <pod-name> -o wide**

(2)以yaml格式显示Pod的详细信息

**# kubectl get pod <pod-name> -o yaml**

(3)以自定义列名显示Pod的信息

**# kubectl get pod <pod-name> -o=custom-columns=NAME:.metadata.name,RSRC:.metadata.resourceVersion**

(4)基于文件的自定义列名输出

**# kubectl get pods <pod-name> -o=custom-columns-file=template.txt**

template.txt文件的内容为

NAME                RSRC
metadata.name       metadata.resourceVersion

输出结果

**# kubectl get pods chaosfomoney-deployment-64ccd59bdc-h72gh -o=custom-columns-file=template.txt** 
NAME                                       RSRC
chaosfomoney-deployment-64ccd59bdc-h72gh   101119

将输出结果按某个字段排序,通过–sort-by参数以jsonpath表达式进行指定

kubectl [command] [TYPE] [NAME] --sort-by=<jsonpath_exp>

例如按照名字进行排序

[root@master ~]# kubectl get pods
NAME                      READY   STATUS             RESTARTS   AGE
apache-594d8494b4-s6dfd   0/1     ImagePullBackOff   0          9m1s
nginx-6799fc88d8-nbgc2    1/1     Running            0          35h
# kubectl get pods --sort-by=.metadata.name
NAME                                       READY     STATUS    RESTARTS   AGE
chaosfomoney-deployment-64ccd59bdc-h72gh   1/1       Running   0          1d
chaosfomoney-deployment-64ccd59bdc-spnpj   1/1       Running   0          1d
chaosfomoney-deployment-64ccd59bdc-xhnjr   1/1       Running   0          1d

kubectl操作示例

查看所有node详细信息

[root@master ~]# kubectl get nodes
NAME     STATUS   ROLES                  AGE   VERSION
master   Ready    control-plane,master   36h   v1.20.0
node1    Ready    <none>                 35h   v1.20.0
node2    Ready    <none>                 35h   v1.20.0

查看 运行详细信息

[root@master ~]# kubectl get pods -o wide
NAME                      READY   STATUS             RESTARTS   AGE   IP           NODE    NOMINATED NODE   READINESS GATES
apache-594d8494b4-s6dfd   0/1     ImagePullBackOff   0          19m   10.244.1.3   node1   <none>           <none>
nginx-6799fc88d8-nbgc2    1/1     Running            0          35h   10.244.1.2   node1   <none>     

创建一个deployment类型的资源

[root@master ~]# kubectl create deployment deploy-web --image=itlang11:v0.1 --replicas=3
deployment.apps/deploy-web created


[root@master ~]# kubectl get pods
NAME                          READY   STATUS              RESTARTS   AGE
apache-594d8494b4-s6dfd       0/1     ImagePullBackOff    0          26m
deploy-web-79df5694b9-2sh6d   0/1     ImagePullBackOff    0          64s
deploy-web-79df5694b9-5lvqk   0/1     ImagePullBackOff    0          64s
deploy-web-79df5694b9-bqxpb   0/1     ContainerCreating   0          64s

删除

[root@master ~]# kubectl delete deployment deploy-web
deployment.apps "deploy-web" deleted

正在删除的显示

[root@master ~]# kubectl get pods
NAME                          READY   STATUS             RESTARTS   AGE
apache-594d8494b4-s6dfd       0/1     ImagePullBackOff   0          29m
deploy-web-79df5694b9-2sh6d   0/1     Terminating        0          3m25s
deploy-web-79df5694b9-5lvqk   0/1     Terminating        0          3m25s
[root@master ~]# kubectl get pods
NAME                      READY   STATUS             RESTARTS   AGE
apache-594d8494b4-s6dfd   0/1     ImagePullBackOff   0          29m
nginx-6799fc88d8-nbgc2    1/1     Running            0          35h

实时监控拉取镜像的状态

[root@master ~]# kubectl get pods -w

暴露一个项目。让外部可以访问

[root@master ~]# kubectl expose deployment deploy-web --port=80 --protocol=TCP
service/deploy-web exposed
[root@master ~]# kubectl get service
NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
deploy-web   ClusterIP   10.110.221.73   <none>        80/TCP         12s
kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP        36h
nginx        NodePort    10.110.131.88   <none>        80:32287/TCP   35h
// 查看所有的资源信息
# kubectl get all
# kubectl get --all-namespaces

// 查看pod列表
# kubectl get pod

// 显示pod节点的标签信息
# kubectl get pod --show-labels

// 根据指定标签匹配到具体的pod
# kubectl get pods -l app=example

// 查看node节点列表
# kubectl get node

// 显示node节点的标签信息
# kubectl get node --show-labels

// 查看pod详细信息,也就是可以查看pod具体运行在哪个节点上(ip地址信息)
# kubectl get pod -o wide

// 查看服务的详细信息,显示了服务名称,类型,集群ip,端口,时间等信息
# kubectl get svc
# kubectl get svc -n kube-system

// 查看命名空间
# kubectl get ns
# kubectl get namespaces

// 查看所有pod所属的命名空间
# kubectl get pod --all-namespaces

// 查看所有pod所属的命名空间并且查看都在哪些节点上运行
# kubectl get pod --all-namespaces  -o wide

// 查看目前所有的replica set,显示了所有的pod的副本数,以及他们的可用数量以及状态等信息
# kubectl get rs

// 查看已经部署了的所有应用,可以看到容器,以及容器所用的镜像,标签等信息
# kubectl get deploy -o wide
# kubectl get deployments -o wide

run命令

语法:

run NAME --image=image [--env="key=value"] [--port=port] [--replicas=replicas] [--dry-run=bool] [--overrides=inline-json] [--command] -- [COMMAND] [args...]
// 示例,运行一个名称为nginx,副本数为3,标签为app=example,镜像为nginx:1.10,端口为80的容器实例

# kubectl run nginx --replicas=3 --labels="app=example" --image=nginx:1.10 --port=80
// 示例,运行一个名称为nginx,副本数为3,标签为app=example,镜像为nginx:1.10,端口为80的容器实例,并绑定到k8s-node1上
# kubectl run nginx --image=nginx:1.10 --replicas=3 --labels="app=example" --port=80 --overrides='{"apiVersion":"apps/v1","spec":{"template":{"spec":{"nodeSelector":{"kubernetes.io/hostname":"k8s-node1"}}}}}'

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值