kubectl常用命令使用
kubectl用法概述
kubectl [command] [TYPE] [NAME] [flags]
- command:子命令,用于操作Kubernetes集群资源对象的命令,例如create、delete、describe、get、apply等。
- TYPE:资源对象的类型,区分大小写,能以单数形式、复数形式或者简写形式表示。例如以下3种TYPE是等价的。
kubectl get pod pod1
kubectl get pods pod1
kubectl get po pod1
- NAME:资源对象的名称,区分大小写。如果不指定名称,则系统将返回属于TYPE的全部对象的列表,例如$ kubectl get pods将返回所有Pod的列表。
- flags:kubectl子命令的可选参数,例如使用“-s”指定apiserver的URL地址而不用默认值。
在一个命令行中也可以同时对多个资源对象进行操作,以多个TYPE和NAME的组合表示,示例如下
// 获取多个Pod的信息
[root@master ~]# kubectl get pods pod1 pod2
// 获取多种对象的信息
[root@master ~]# kubectl get pod/pod1 rc/rc1
//同时应用多个yaml文件,以多个-f file参数表示
[root@master ~]# kubectl get pod -f pod1.yaml -f pod2.yaml
[root@master ~]# kubectl create -f pod1.yaml -f rc1.yaml -f service1.yaml
基础命令
create,delete,get,run,expose,set,explain,edit
create命令
根据文件或者输入来创建资源
//创建Deployment和Service资源
[root@master ~]# kubectl create -f demo-deployment.yaml
[root@master ~]# kubectl create -f demo-service.yaml
[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
delete命令
删除资源
//根据yaml文件删除对应的资源,但是yaml文件并不会被删除,这样更加高效
[root@master ~]# kubectl delete -f demo-deployment.yaml
[root@master ~]# kubectl delete -f demo-service.yaml
//也可以通过具体的资源名称来进行删除,使用这个删除资源,同时删除deployment和service资源
[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
nginx-6799fc88d8-nbgc2 1/1 Running 0 35h
get 命令
获得资源信息
// 查看所有的资源信息
[root@master ~]# kubectl get all
$ kubectl get --all-namespaces
// 查看pod列表
[root@master ~]# kubectl get pod
// 显示pod节点的标签信息
[root@master ~]# kubectl get pod --show-labels
// 根据指定标签匹配到具体的pod
[root@master ~]# kubectl get pods -l app=example
// 查看node节点列表
[root@master ~]# kubectl get node
// 显示node节点的标签信息
[root@master ~]# kubectl get node --show-labels
// 查看pod详细信息,也就是可以查看pod具体运行在哪个节点上(ip地址信息)
[root@master ~]# kubectl get pod -o wide
// 查看服务的详细信息,显示了服务名称,类型,集群ip,端口,时间等信息
[root@master ~]# kubectl get svc
[root@master ~]# kubectl get svc -n kube-system
// 查看命名空间
[root@master ~]# kubectl get ns
[root@master ~]# kubectl get namespaces
// 查看所有pod所属的命名空间
[root@master ~]# kubectl get pod --all-namespaces
// 查看所有pod所属的命名空间并且查看都在哪些节点上运行
[root@master ~]# kubectl get pod --all-namespaces -o wide
// 查看目前所有的replica set,显示了所有的pod的副本数,以及他们的可用数量以及状态等信息
[root@master ~]# kubectl get rs
// 查看已经部署了的所有应用,可以看到容器,以及容器所用的镜像,标签等信息
[root@master ~]#$ kubectl get deploy -o wide
[root@master ~]# kubectl get deployments -o wide
run 命令
在集群中创建并运行一个或多个容器镜像。
// 示例,运行一个名称为nginx,副本数为3,标签为app=example,镜像为nginx:1.10,端口为80的容器实例
[root@master ~]# kubectl run nginx --replicas=3 --labels="app=example" --image=nginx:1.10 --port=80
//示例,运行一个名称为nginx,副本数为3,标签为app=example,镜像为nginx:1.10,端口为80的容器实例,并绑定到k8s-node1上
[root@master ~]# 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"}}}}}'
expose 命令
创建一个service服务,并且暴露端口让外部可以访问
// 创建一个nginx服务并且暴露端口让外界可以访问
[root@master ~]# kubectl expose deployment nginx --port=88 --type=NodePort --target-port=80 --name=nginx-service
set 命令
配置应用的一些特定资源,也可以修改应用已有的资源
使用 kubectl set --help查看,它的子命令,env,image,resources,selector,serviceaccount,subject。
kubectl set image 命令
用于更新现有资源的容器镜像。
可用资源对象包括:pod (po)、replicationcontroller (rc)、deployment (deploy)、daemonset (ds)、job、replicaset (rs)。
// 将deployment中的nginx容器镜像设置为“nginx:1.9.1”
[root@master ~]# kubectl set image deployment/nginx busybox=busybox nginx=nginx:1.9.1
// 所有deployment和rc的nginx容器镜像更新为“nginx:1.9.1”
[root@master ~]# kubectl set image deployments,rc nginx=nginx:1.9.1 --all
// 将daemonset abc的所有容器镜像更新为“nginx:1.9.1”
[root@master ~]# kubectl set image daemonset abc *=nginx:1.9.1
// 从本地文件中更新nginx容器镜像
[root@master ~]# kubectl set image -f path/to/file.yaml nginx=nginx:1.9.1 --local -o yaml