Kubectl config current-context Kubectl config use-context source /usr/share/nginx/html/index.html'; done kubectl explain hpa kubectl explain svc --label-columns failure-domain.beta.kubernetes.io/region,failure-domain.beta.kubernetes.io/zone kubectl get nodes -o wide -L beta.kubernetes.io/arch -L beta.kubernetes.io/os -L beta.kubernetes.
## Kubernetes - 命令  ************************** ### Kubectl? * "Kubectl 是一个命令行界面,它允许你在 Kubernetes 集群上执行命令。" 我们将通过这种方式在集群上执行各种操作。 * Kubectl 依赖于 kubeconfig。这是一个配置文件,用于访问一个或多个集群。要了解配置了哪个集群,我们可以使用: ``` Kubectl config current-context ``` * 如果我们想在配置中切换集群,可以使用: ``` Kubectl config use-context ``` *************************** ### 客户端配置 - 在 bash 中设置自动补全;首先需要安装 bash-completion 包 ``` source <(kubectl completion bash) ``` - 查看 Kubernetes 配置 ``` kubectl config view``` - 通过 json 路径查看特定的配置项 ``` kubectl config view -o jsonpath='{.users[?(@.name == "k8s")].user.password}' ``` - 为 foo.kuberntes.com 设置凭证 ``` kubectl config set-credentials kubeuser/foo.kubernetes.com --username=kubeuser --password=kubepassword ``` *************************** ### 查看、查找资源 - 列出命名空间中的所有服务 ``` kubectl get services ``` - 以宽格式列出所有命名空间中的所有 Pod ``` kubectl get pods -o wide --all-namespaces ``` - 以 JSON(或 YAML)格式列出所有 Pod ``` kubectl get pods -o json ``` - 描述资源详情(节点、Pod、服务) ``` kubectl describe nodes my-node ``` - 按名称列出服务 ``` kubectl get services --sort-by=.metadata.name ``` - 按重启次数列出 Pod ```kubectl get pods --sort-by='.status.containerStatuses[0].restartCount'``` - 对前端 v1 的 Pod 进行滚动更新 ``` kubectl rolling-update frontend-v1 -f frontend-v2.json ``` - 将名为 'foo' 的 ReplicaSet 扩展到 3 ``` kubectl scale --replicas=3 rs/foo ``` - 将 'foo.yaml' 中指定的资源扩展到 3 ``` kubectl scale --replicas=3 -f foo.yaml ``` - 在每个 Pod/副本上执行命令 ``` for i in 0 1; do kubectl exec foo-$i -- sh -c 'echo $(hostname) > /usr/share/nginx/html/index.html'; done ``` ### 解释资源 ``` kubectl explain hpa ``` ```kubectl explain svc``` ### 获取节点的区域和区域 ### kubectl get nodes ```--label-columns failure-domain.beta.kubernetes.io/region,failure-domain.beta.kubernetes.io/zone``` ### 获取架构、操作系统、实例类型和节点类型(如果使用 kops) ```kubectl get nodes -o wide -L beta.kubernetes.io/arch -L beta.kubernetes.io/os -L beta.kubernetes.io/instance-type -L kops.k8s.io/instancegroupkubectl get nodes -L beta.kubernetes.io/arch -L beta.kubernetes.io/os -L beta.kubernetes.io/instance-type -L kops.k8s.io/instancegroup``` ### 仅获取节点版本和名称 ```kubectl get nodes -o custom-columns=NAME:.metadata.name,VER:.status.nodeInfo.kubeletVersion``` ### 获取可调度节点 ```kubectl get nodes --output 'jsonpath={range $.items[*]}{.metadata.name} {.spec.taints[*].effect}{"\n"}{end}' | awk '!/NoSchedule/{print $1}'``` ### 获取所有部署的名称 ```kubectl get deployment -o=jsonpath={.items[*].metadata.name}``` ### 仅获取第一个部署 ```kubectl get deployment -o=jsonpath={.items[0].metadata.name}``` ### 仅获取所有 Pod 的状态 ```kubectl get pods -o=jsonpath=‘{.items[*].status.phase}’ --all-namespaces``` ### 获取 Pod 的 QoS ```kubectl get pods --all-namespaces -o custom-columns=NAME:.metadata.name,NAMESPACE:.metadata.namespace,QOS-CLASS:.status.qosClass``` ### 获取正在运行的镜像 ```kubectl get pod -o=jsonpath='{.spec.containers[*].image}' --all-namespaces``` ```kubectl get pod -o=custom-columns=NAME:.metadata.name,IMAGE:.spec.containers[*].image --all-namespaces``` ### 我的 Pod 运行在哪里 ```kubectl get pods -n sock-shop -l name=carts -o wide``` ### 检查节点/Pod 的内存和 CPU 使用情况 ```kubectl top nodes``` ```kubectl top pods``` ### 检查 etcd 的健康状况 ```kubectl get --raw=/healthz/etcd``` ### 检查节点自动缩放器的状态 ```kubectl describe configmap cluster-autoscaler-status -n kube-system``` ### 获取 Pod 运行的节点名 ```kubectl get pod -o=custom-columns=NAME:.metadata.name,STATUS:.status.phase,NODE:.spec.nodeName --all-namespaceskubectl get pod -o=custom-columns=NODE:.spec.nodeName,NAME:.metadata.name --all-namespaces``` ### 示例:按节点名排序 Pod: ```kubectl get pods -o wide --sort-by="{.spec.nodeName}"``` ### 示例:使用标签过滤获取 Pod: ```bash for n in $(kubectl get nodes -l your_label_key=your_label_value --no-headers | cut -d " " -f1); do kubectl get pods --all-namespaces --no-headers --field-selector spec.nodeName=${n} done
kubectl get pods --sort-by="{.status.containerStatuses[:1].restartCount}"
kubectl get pods prometheus-prometheus-operator-prometheus-0 -o jsonpath='{.spec.containers[*].name}'
kubectl exec -i -t prometheus-prometheus-operator-prometheus-0 -c thanos-sidecar -n monitoring -- df -h
$ kubectl get nodes NAME STATUS AGE ip-254-0-90-30.ec2.internal Ready 2d ip-254-0-90-35.ec2.internal Ready 2d ip-254-0-90-50.ec2.internal Ready,SchedulingDisabled 2d ip-254-0-91-60.ec2.internal Ready 2d ip-254-0-91-65.ec2.internal Ready 2d $ kubectl get pods --template '{{range .items}}{{if eq .spec.nodeName "ip-254-0-90-30.ec2.internal"}}{{.metadata.name}}{{"\n"}}{{end}}}{{end}}' filebeat-000 app-0000 node-exporter-0000 prometheus-000
kubectl get pods --field-selector=status.phase!=Running --all-namespaces
kubectl get nodes --sort-by={.metadata.labels."kubernetes\.io\/role"}kubectl get node --sort-by={.status.nodeInfo.kubeletVersion}watch kubectl get node --sort-by={.status.nodeInfo.kubeletVersion} watch "kubectl get nodes --sort-by={.metadata.labels.\"kubernetes\.io\/role\"}"kubectl get nodes --sort-by=".status.conditions[?(@.reason == 'KubeletReady' )].lastTransitionTime"
kubectl get --raw=/apiskubectl get --raw=/logs/kube-apiserver.log
kubectl run ken-test --image=kenichishibata/docker-curl -i --tty --limits='cpu=50m,memory=128Mi' --requests='cpu=50m,memory=128Mi'kubectl delete deployment ken-test
kubectl get event --field-selector=involvedObject.name =foo -w
kubectl api-resourceskubectl api-versions
kubectl get apiservices.apiregistration.k8s.iokubectl get apiservices.apiregistration.k8s.io v1beta1.metrics.k8s.io -o yaml
kubectl get hpakubectl get hpa --all-namespaces kubectl get --raw /apis/metrics.k8s.io
kubectl alpha diff -h
apiVersion: v1 kind: Pod metadata: name: testing namespace: monitoring spec: serviceAccountName: build-robot automountServiceAccountToken: false containers: - image: alpine:3.2 command: - /bin/sh - "-c" - "sleep 60m" imagePullPolicy: IfNotPresent name: alpine restartPolicy: Always
kubectl apply -f testing.yaml --namespace=monitoring
kubectl exec -ti testing --namespace=monitoring -- sh
或
kubectl run -it testing --image testing --namespace monitoring /bin/sh
kubectl create -f FILE
kubectl apply -f FILE
从配置文件或直接从资源名称删除一个或多个 Kubernetes 资源。
例如 Kubectl delete my_pod (在集群上销毁名为 my_pod 的 Pod)
kubectl delete (-f FILE | TYPE [PREFIX_NAME | NAME])
kubectl port-forward POD [LOCAL_PORT:]REMOTE_PORT
在 Kubernetes 集群上运行资源。
kubectl run NAME --image=image [--env=”key=value”] [--port=port] [--replicas=replicas]
获取 Pod 或服务的文档
kubectl explain pods,svc
kubectl create -f ./my-manifest.yaml
kubectl apply -f ./my-manifest.yaml
kubectl run nginx --image=nginx
cat <<EOF | kubectl create -f - apiVersion: v1 kind: Secret metadata: name: mysecret type: Opaque data: password: $(echo "s33msi4" | base64) username: $(echo "jane"| base64) EOF
kubectl delete -f ./my-manifest.yaml
Kubectl 监控命令
Kubectl get pods
此命令列出了 Kubernetes 集群上的 Pod。这个命令适用于所有类型的 Kubernetes 资源:Pod、服务、部署、CronJobs、事件、Ingress 等。我们还可以添加参数:
--all-namespaces: 列出所有命名空间中的所有资源。
-o wide: 以更详细的格式列出所有资源。
Kubectl describe pod
描述命令提供了 Pod 的详细信息,不同于 get 和基本显示。这在 Pod 无法启动时非常有用。
例如:Kubectl describe pods my-pod。
kubectl logs [-f] POD [-c CONTAINER]
此命令显示您的 Pod 的日志。当我们想显示一个多容器 Pod 的日志时,可以添加 -c container 参数。-f 命令会持续显示日志输出(流式)。
例如:Kubectl logs -f my_pod -c my_app
-> 流式显示 my_pod Pod 上 my_app 容器的日志。
kubectl top pod POD_NAME --containers
显示给定 Pod 及其容器在 Kubernetes 集群中的指标。
kubectl create -f deploy/kube-config/standalone/
kubectl top node
kubectl top pod
kubectl top pod pod_name --containers
kubectl logs pod_name
kubectl logs -f pod_name -c my-container
声明:
本文件灏天文库团队进行了翻译。尽管我们力求准确,但请注意,翻译可能包含错误或不准确之处。原文档以其原始语言为准。我们不对因使用此翻译而产生的任何误解或误译负责。