Kubernetes - Kubectl命令

Kubectl 控制Kubernetes群集.它是Kubernetes的关键组件之一,它在设置完成后在任何机器上的工作站上运行.它具有管理集群中节点的能力.

Kubectl 命令用于交互和管理Kubernetes对象和集群.在本章中,我们将通过kubectl讨论Kubernetes中使用的一些命令.

kubectl annotate : 它更新资源上的注释.

$kubectl annotate [--overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 ...
KEY_N = VAL_N [--resource-version = version]

例如,

 
 kubectl annotate pods tomcat description ='my frontend'

kubectl api-versions : 它在群集上打印支持的API版本.

 
 $ kubectl api-version;

kubectl apply : 它具有按文件或标准输入配置资源的能力.

 
 $ kubectl apply -f< filename>

kubectl attach : 这会将事物附加到正在运行的容器中.

 
 $ kubectl attach< pod> -c< container> 
 $ kubectl attach 123456-7890 -c tomcat-conatiner

kubectl autoscale : 这用于自动扩展已定义的pod,例如Deployment,副本集,Replication Controller.

 
 $ kubectl autoscale(-f FILENAME | TYPE NAME | TYPE/NAME)[--min = MINPODS]  -  
 max = MAXPODS [--cpu-percent = CPU] [flags] 
 $ kubectl autoscale deployment foo --min = 2  - max = 10

kubectl cluster-info : 它显示集群信息.

 
 $ kubectl cluster-info

kubectl cluster-info dump : 它会转储有关集群的相关信息以进行调试和诊断.

 
 $ kubectl cluster-info dump 
 $ kubectl cluster-info dump  - output-directory =/path/to/cluster-state

kubectl config : 修改kubeconfig文件.

 
 $ kubectl config< SUBCOMMAD> 
 $ kubectl config --kubeconfig<文件名字符串>

kubectl config current-context : 它显示当前上下文.

 
 $ kubectl config current-context 
 #deploys当前上下文

kubectl config delete-cluster : 从kubeconfig中删除指定的集群.

 
 $ kubectl config delete-cluster< Cluster Name>

kubectl config delete-context : 从kubeconfig中删除指定的上下文.

 
 $ kubectl config delete-context< Context Name>

kubectl config get-clusters : 显示在kubeconfig中定义的集群.

 
 $ kubectl config get-cluster 
 $ kubectl config get-cluster< Cluser Name>

kubectl config get-contexts : 描述一个或多个上下文.

 
 $ kubectl config get-context< Context Name>

kubectl config set-cluster : 在Kubernetes中设置集群条目.

 
 $ kubectl config set-cluster NAME [--server = server] [--certificateauthority = 
 path/to/certificate/authority] [--insecure-skip-tls-verify = true]

kubectl config set-context : 在kubernetes入口点设置上下文条目.

 
 $ kubectl config set-context NAME [--cluster = cluster_nickname] [ -  
 user = user_nickname] [--namespace = namespace] 
 $ kubectl config set-context prod -user = vipin-mishra

kubectl config set-credentials : 在kubeconfig中设置用户条目.

 
 $ kubectl config set-credentials cluster-admin --username = vipin  -  
 password = uXFGweU9l35qcif

kubectl config set : 在kubeconfig文件中设置单个值.

 
 $ kubectl config set PROPERTY_NAME PROPERTY_VALUE

kubectl config unset : 它取消了kubectl中的特定组件.

 
 $ kubectl config unset PROPERTY_NAME PROPERTY_VALUE

kubectl config use-context : 设置kubectl文件中的当前上下文.

 
 $ kubectl config use-context< Context Name>

kubectl配置视图

 $ kubectl config view
 $ kubectl config view -o jsonpath ='{.users [?(@.name =="e2e")].user.password}'

kubectl cp : 将文件和目录复制到容器中或从容器中复制.

 
 $ kubectl cp<来自源的文件> < Files to Destinatiion> 
 $ kubectl cp/tmp/foo< some-pod>:/tmp/bar -c< specific-container>

kubectl create : 按文件名或stdin创建资源.为此,接受JSON或YAML格式.

 
 $ kubectl create -f<文件名> 
 $ cat<文件名> | kubectl create -f  -

以同样的方式,我们可以使用 create 命令和

  • 部署

  • namespace

  • quota

  • secret docker-registry

  • secret

  • secret generic

  • secret tls

  • serviceaccount

  • service clusterip

  • service loadbalancer

  • 服务节点端口

kubectl delete : 按文件名,标准输入,资源和名称删除资源.

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

kubectl describe : 描述kubernetes中的任何特定资源.显示资源或一组资源的详细信息.

 
 $ kubectl describe< type> <类型名称> 
 $ kubectl describe pod tomcat

kubectl drain : 这用于排出节点以进行维护.它准备节点进行维护.这会将节点标记为不可用,因此不应为其分配新容器.

 
 $ kubectl drain tomcat -force

kubectl edit : 它用于结束服务器上的资源.这允许直接编辑可以通过命令行工具接收的资源.

 
 $ kubectl edit< Resource/Name |文件名)
 Ex. 
 $ kubectl edit rc/tomcat

kubectl exec : 这有助于在容器中执行命令.

 
 $ kubectl exec POD< -c CONTAINER> -  COMMAND< ARGS ...> 
 $ kubectl exec tomcat 123-5-456 date

kubectl expose : 这用于将Kubernetes对象(如pod,复制控制器和服务)公开为新的Kubernetes服务.这可以通过正在运行的容器或 yaml 文件公开它.

 
 $ kubectl expose( - f FILENAME | TYPE NAME)[ -  port = port] [--protocol = TCP | UDP] 
 [--target-port = number-or-name] [ -  name = name] [ -  external -ip = external-ip-ofservice] 
 [--type = type] 
 $ kubectl expose rc tomcat --port = 80 -target-port = 30000 
 $ kubectl expose -f tomcat .yaml -port = 80 -target-port =

kubectl get : 此命令能够在集群上获取有关Kubernetes资源的数据.

$ kubectl get [(-o|--output=)json|yaml|wide|custom-columns=...|custom-columnsfile=...|
go-template=...|go-template-file=...|jsonpath=...|jsonpath-file=...]
(TYPE [NAME | -l label] | TYPE/NAME ...) [flags]

例如,

 
 $ kubectl get pod< pod name> 
 $ kubectl get service<服务名称>

kubectl logs : 它们用于在容器中获取容器的日志.打印日志可以在容器中定义容器名称.如果POD只有一个容器,则无需定义其名称.

$ kubectl logs [-f] [-p] POD [-c CONTAINER]
Example
$ kubectl logs tomcat.
$ kubectl logs –p –c tomcat.8

kubectl port-forward : 它们用于将一个或多个本地端口转发到pod.

 
 $ kubectl port-forward POD [LOCAL_PORT:] REMOTE_PORT 
 [ ... [LOCAL_PORT_N:] REMOTE_PORT_N] 
 $ kubectl port-forward tomcat 3000 4000 
 $ kubectl port-forward tomcat 3000:5000

kubectl replace : 能够通过文件名或 stdin 替换资源.

$ kubectl replace -f FILENAME
$ kubectl replace –f tomcat.yml
$ cat tomcat.yml | kubectl replace –f -

kubectl rolling-update : 在复制控制器上执行滚动更新.通过一次更新POD,用新的复制控制器替换指定的复制控制器.

 
 $ kubectl rolling-update OLD_CONTROLLER_NAME([NEW_CONTROLLER_NAME]  -  -  
 image = NEW_CONTAINER_IMAGE | -f NEW_CONTROLLER_SPEC)
 $ kubectl rolling-update frontend-v1 -f freontend-v2.yaml

kubectl rollout : 它能够管理部署的部署.

$ Kubectl rollout <Sub Command>
$ kubectl rollout undo deployment/tomcat

除上述内容外,我们还可以使用卷展栏执行多项任务,例如 :

  • 推出历史记录

  • 推出暂停

  • 推出简历

  • 推出状态

  • 推出撤消

kubectl run : 运行命令可以在Kubernetes集群上运行图像.

$ kubectl run NAME --image = image [--env = "key = value"] [--port = port] [--
replicas = replicas] [--dry-run = bool] [--overrides = inline-json] [--command] --
[COMMAND] [args...]
$ kubectl run tomcat --image = tomcat:7.0
$ kubectl run tomcat –-image = tomcat:7.0 –port = 5000

kubectl scale : 它将扩展Kubernetes Deployments,ReplicaSet,Replication Controller或job的大小.

 
 $ kubectl scale [--resource-version = version] [--current-replicas = count]  -  
 replicas = COUNT(-f FILENAME | TYPE NAME)
 $ kubectl scale --replica = 3 rs/tomcat 
 $ kubectl scale -replica = 3 tomcat.yaml

kubectl set image : 它会更新pod模板的图像.

 
 $ kubectl set image(-f FILENAME | TYPE NAME)
 CONTAINER_NAME_1 = CONTAINER_IMAGE_1. .. CONTAINER_NAME_N = CONTAINER_IMAGE_N 
 $ kubectl set image deployment/tomcat busybox = busybox ngnix = ngnix:1.9.1 
 $ kubectl set image deploymentments,rc tomcat = tomcat6.0 --all

kubectl设置资源 : 它用于设置资源的内容.它使用pod模板更新对象的资源/限制.

 
 $ kubectl set resources(-f FILENAME | TYPE NAME)([ -  limit = LIMITS&  -  
 requests = REQUESTS] 
 $ kubectl set resources deployment tomcat -c = tomcat  -  
 limits = cpu = 200m,memory = 512Mi

kubectl top node : 它显示CPU/内存/存储使用情况.top命令允许您查看节点的资源消耗.

 
 $ kubectl top node [node Name]

相同的命令可以与pod一起使用同样.