3、Kubectl 的使用
kubectl 是 Kubernetes 的 CLI 工具,它是一种与 Kube API 服务器通信的安全方式。
这意味着我可以使用“kubectl”创建、列出、删除和更新 Kubernetes 资源。 所以,我们可以通过 Rest API 以一种安全且简单的方式对 kube-api 服务器应用 HTTP 方法。
1、基本使用
命令 Kubectl Create – Kubectl Apply – Kubectl Run
1.1 创建资源
kubectl create <resourceKind> <resourceName>
使用参数创建:
kubectl create deployments sample-deployment --image=nginx
或者从yaml配置文件创建资源
kubectl create -f samplek8sresource.yaml
也可以使用apply 从yaml配置文件创建资源
kubectl apply -f samplek8sresource.yaml
注意:
create 和 apply 的区别在于“create”只能创建资源,而“apply”可以创建和更新资源。 例如,如果资源已经启动并运行,并且你在 YAML 中进行了更改,“create”命令将失败,但“apply”将更新资源
创建资源的唯一例外是 Pod,对于 Pod,我们直接运行它:
kubectl run <podName> --image=<imageName>
例如:
kubectl run nginx --image=nginx
1.2 使用Kubectl 列出资源
kubectl get <resourceKind>
例如:
kubectl get deployments -A
不加 -A 只会列出 default空间的部署资源。
对于特定的命名空间,我们需要添加“–namespace”或“-n”参数并指定命名空间名称。
获取所有空间的pod
kubectl get pods --all-namespaces
获取特定资源:
kubectl get <resourceKind> <resourceName>
要获取有关资源的更多信息:
kubectl describe <resourceKind> <resourceName>
2、更多使用
kubectl 在后台发送 HTTP 请求并接收 JSON 格式的 HTTP 响应。 Kubectl 美化了该响应,并以不同的格式为我们提供了可理解的输出。
使用 -o 会有不一样的输出:
kubectl get pods -o wide
会提供节点node 的 IP
获取json格式的输出:
kubectl get pods -o json
我们也可可以使用jsonpath获取特定的信息
kubectl get <resourceKind> -o jsonpath='{jsonpath.to.the.information}'
通过 custom-columns , 我们可以美化输出。我们创建自定义列并添加与它们对应的信息。
kubectl get <resourceKind> -o custom-columns=’<TITLE1>:<jsonpath>,<TITLE2>:<jsonpath>, …’
注意:
当您使用 jsonpath 时,您必须提及第一个元素(即 .items[] ),因为您提供的是 jsonpath。 但是,当您使用自定义列时,您会跳过第一个元素。
kubectl get pods -o custom-columns='NAME:.metadata.name'
定义多列输出
kubectl get pods -o custom-columns='NAME:.metadata.name,NODE:.spec.name' -n demo
我们可以将格式化的输出写到文本中, 通过添加 " > ."
kubectl get pods -n demo -o wide > pods.txt
或者
kubectl get pods -n demo -ojson > pods.json
自定义输出列也可以输出到文件
kubectl get pods -o custom-columns='NAME:.metadata.name,STATUS:.status.phase' -n demo > podstatus.txt