kubectl概述

kubectl是Kubernetes集群的命令行工具,通过kubectl能够对集群本身进行管理,并能够在集群上进行容器化应用的安装部署

kubectl命令的语法如下

[root@k8s-master ~]$ kubectl [command] [TYPE] [NAME] [flags]
	comand:子命令,用于管理和操作Kubernetes集群资源对象的命令,指定要对资源执行的操作,例如create、get、describe和delete
	TYPE:指定资源类型,资源类型是大小学敏感的,开发者能够以单数、复数和缩略的形式。
		例如:
		$ kubectl get pod pod1 
		$ kubectl get pods pod1 
		$ kubectl get po pod1
	NAME:指定资源的名称,名称也大小写敏感的。如果省略名称,则会显示所有的资源
	flags:指定可选的参数。例如,可以使用-s或者–server参数指定Kubernetes API server的地址和端口。

K8s kubectl 命令自动补全

  1. 安装bash-completion
[root@k8s-master ~]$ yum -y install bash-completion
  1. 执行bash_completion
[root@k8s-master ~]$ source /usr/share/bash-completion/bash_completion
  1. 重新加载kubectl completion
[root@k8s-master ~]$ source <(kubectl completion bash)
  1. 就能用tab补全命令了

kubectl的常用子命令(command)

kubectl作为kubernetes的命令行工具,主要的职责就是对集群中的资源的对象进行操作,这些操作包括对资源对象的创建、删除和查看等。下表中显示了kubectl支持的所有操作,以及这些操作的语法和描述信息:

操作语法描述
annotatekubectl annotate (-f FILENAME | TYPE NAME | TYPE/NAME) KEY_1=VAL_1 … KEY_N=VAL_N [–overwrite] [–all] [–resource-version=version] [flags]添加或更新一个或多个资源的注释
api-versionskubectl api-versions [flags]列出可用的API版本
applykubectl apply -f FILENAME [flags]将来自于文件或stdin的配置变更应用到主要对象中。
attachkubectl attach POD -c CONTAINER [-i] [-t] [flags]连接到正在运行的容器上,以查看输出流或与容器交互(stdin)。
autoscalekubectl autoscale (-f FILENAME | TYPE NAME | TYPE/NAME) [–min=MINPODS] –max=MAXPODS [–cpu-percent=CPU] [flags]自动扩宿容由副本控制器管理的Pod。
cluster-infokubectl cluster-info [flags]显示群集中的主节点和服务的的端点信息。
configkubectl config SUBCOMMAND [flags]修改kubeconfig文件。
createkubectl create -f FILENAME [flags]从文件或stdin中创建一个或多个资源对象。
deletekubectl delete (-f FILENAME | TYPE [NAME | /NAME | -l label | –all]) [flags]删除资源对象。
describekubectl describe (-f FILENAME | TYPE [NAME_PREFIX | /NAME | -l label]) [flags]显示一个或者多个资源对象的详细信息。
editkubectl edit (-f FILENAME | TYPE NAME | TYPE/NAME) [flags]通过默认编辑器编辑和更新服务器上的一个或多个资源对象。
execkubectl exec POD [-c CONTAINER] [-i] [-t] [flags] [– COMMAND [args…]]在Pod的容器中执行一个命令。
explainkubectl explain [–include-extended-apis=true] [–recursive=false] [flags]获取Pod、Node和服务等资源对象的文档。
exposekubectl expose (-f FILENAME | TYPE NAME | TYPE/NAME) [–port=port] [–protocol=TCP|UDP] [–target-port=number-or-name] [–name=name] [—-external-ip=external-ip-of-service] [–type=type] [flags]为副本控制器、服务或Pod等暴露一个新的服务。
getkubectl get (-f FILENAME | TYPE [NAME | /NAME | -l label]) [–watch] [–sort-by=FIELD] [[-o | –output]=OUTPUT_FORMAT] [flags]列出一个或多个资源。
labelkubectl label (-f FILENAME | TYPE NAME | TYPE/NAME) KEY_1=VAL_1 … KEY_N=VAL_N [–overwrite] [–all] [–resource-version=version] [flags]添加或更新一个或者多个资源对象的标签。
logskubectl logs POD [-c CONTAINER] [–follow] [flags]显示Pod中一个容器的日志。
patchkubectl patch (-f FILENAME | TYPE NAME | TYPE/NAME) –patch PATCH [flags]使用策略合并补丁过程更新资源对象中的一个或多个字段。
port-forwardkubectl port-forward POD [LOCAL_PORT:]REMOTE_PORT […[LOCAL_PORT_N:]REMOTE_PORT_N] [flags]将一个或多个本地端口转发到Pod。
proxykubectl proxy [–port=PORT] [–www=static-dir] [–www-prefix=prefix] [–api-prefix=prefix] [flags]为kubernetes API服务器运行一个代理。
replacekubectl replace -f FILENAME从文件或stdin中替换资源对象。
rolling-updatekubectl rolling-update OLD_CONTROLLER_NAME ([NEW_CONTROLLER_NAME] –image=NEW_CONTAINER_IMAGE | -f NEW_CONTROLLER_SPEC) [flags]通过逐步替换指定的副本控制器和Pod来执行滚动更新。
runkubectl run NAME –image=image [–env=”key=value”] [–port=port] [–replicas=replicas] [–dry-run=bool] [–overrides=inline-json] [flags]在集群上运行一个指定的镜像。
scalekubectl scale (-f FILENAME | TYPE NAME | TYPE/NAME) –replicas=COUNT [–resource-version=version] [–current-replicas=count] [flags]扩宿容副本集的数量。
versionkubectl version [–client] [flags]显示运行在客户端和服务器端的Kubernetes版本。

kubernetes资源对象类型(type)

在kubernetes中,提供了很多的资源对象,开发和运维人员可以通过这些对象对容器进行编排。在下表中,是kubectl所支持的资源对象类型,以及它们的缩略别名:

资源对象类型缩略别名
apiservices
certificatesigningrequestscsr
clusters
clusterrolebindings
clusterroles
componentstatusescs
configmapscm
controllerrevisions
cronjobs
customresourcedefinitioncrd
daemonsetsds
deploymentsdeploy
endpointsep
eventsev
horizontalpodautoscalershpa
ingressesing
jobs
limitrangeslimits
namespacesns
networkpoliciesnetpol
nodesno
persistentvolumeclaimspvc
persistentvolumespv
poddisruptionbudgetpdb
podpreset
podspo
podsecuritypoliciespsp
podtemplates
replicasetsrs
replicationcontrollersrc
resourcequotasquota
rolebindings
roles
secrets
serviceaccountssa
servicessvc
statefulsets
storageclasses

kubectl 常用命令总结

#创建一个nginx的pod
kubectl create deployment nginx --image=nginx

# 查看pod状态
kubectl get pod

# 暴露端口
kubectl expose deployment nginx --port=80 --type=NodePort
# 查看一下对外的端口
kubectl get pod,svc


kubectl get nodes  #查看node状态

kubectl get ns  #查看名称空间


kubectl get pods -n kube-system  #查看pod状态


#只显示默认命名空间的pods
kubectl get pods

#显示所有空间的pod
kubectl get pods --all-namespaces

#显示指定空间的pod
kubectl get pods -o wide --namespace apm

kubectl -n onap get svc  
#获取所有svc(svc 的type,ip ,port)

# 删除指定Pod
kubectl delete pod nginx-5ff7956ff6-fg2db -n dev

# 此时,显示删除Pod成功,但是再查询,发现又新产生了一个 
kubectl get pods -n dev

# 这是因为当前Pod是由Pod控制器创建的,控制器会监控Pod状况,一旦发现Pod死亡,会立即重建
# 此时要想删除Pod,必须删除Pod控制器


# 先来查询一下当前namespace下的Pod控制器
kubectl get deploy -n  dev

# 接下来,删除此PodPod控制器
kubectl delete deploy nginx -n dev
kubectl run http-app --image=http --replicas=2      #--image执行镜像    --replicas定义副本个数
kubectl get deployment       deployment-name                 #查看部署情况
kubectl describe deloyment                   #查看部署的详细信息
kubectl  get pod                             #查看pod状态
kubectl get pod --show-all                  # 显示所有的权限查看pod 
kubectl  get pod -o wide                   #查看pod详情,可以查看到pod ip和分布的node节点
kubectl get node                        #查看node节点状态
kubectl get svc                         #查看service资源
kubectl describe pod podname            #查看pod节点日志信息
kubectl create -f nginx.yml             #创建pod资源
kubectl apply -f nginx.yml              #更新pod资源
kubectl get job                         #查看job状态
kubectl get po --show-all               #查看completed状态的pod
kubectl logs podname                    #查看pod的标准输出
kubectl get events                      #查看集群事件
kubectl label  node 10.199.140.186 disk=ssd    #给node资源添加标签

1、根据yaml配置文件一次性创建service和rc

kubectl create -f my-service.yaml -f my-rc.yaml

2、根据目录下所有.yaml、.yml、.json文件的定义进行创建操作

kubectl create -f <directory>

3、查看所有Pod列表

kubectl get pods

4、查看rc和service列表

kubectl get rc,service

5、显示Node的详细信息

kubectl describe nodes <node-name>

6、显示Pod的详细信息

kubectl describe pods/<pod-name>

7、显示由RC管理的Pod信息

kubectl describe pods <rc-name>

8、删除基于pod.yaml文件定义的Pod

kubectl delete -f pod.yaml

9、删除所有包含某个label的Pod和Service

kubectl delete pods,services -l name=<label-name>

10、删除所有Pod

kubectl delete pods --all

11、在Pod的容器里执行date命令,默认使用Pod中的第1个容器执行

kubectl exec <pod-name> date

12、指定Pod中某个容器执行date命令

kubectl exec <pod-name> -c <container-name> date

13、以bash方式登陆到Pod中的某个容器里

kubectl exec -it <pod-name> -c <container-name> /bin/bash

14、查看容器输出到stdout的日志

kubectl logs <pod-name>

15、跟踪查看容器的日志,相当于tail -f命令的结果

kubectl logs -f <pod-name> -c <container-name>
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐