kubectl get pod
#这个输出提供了 Pod 的详细信息,包括它运行的节点和内部 IP 地址
kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
my-pod-abcde 1/1 Running 0 10h 10.244.1.2 k8s-node01 <none> <none>
kubectl describe node 192.168.0.1
kubectl apply -f my-resource.yaml
区别:kubectl create 时,它将基于你提供的 YAML 或 JSON 文件或其他参数来创建一个新的资源实例。如果该资源已经存在,命令将失败。
4. 基于pod.yaml 删除资源
kubectl delete -f pod.yaml
kubectl delete pod,svc -l name=<label-name>
kubectl delete pod --all
#在 Kubernetes 环境中用于在指定的 Pod 中执行 date 命令。这个命令会在你指定的 Pod 的容器内运行 date 命令,并返回结果。
kubectl exec <pod-name> -- date
kubectl exec <pod-name> -- bash
kubectl exec <pod-name> -- ping 10.24.51.9
kubectl exec -it <pod-name> -c <container-name> -- /bin/bash
kubectl logs <pod-name>
# 实时查看日志
kubectl logs -f <pod-name>
# 若 pod 只有一个容器,可以不加 -c
kubectl log <pod-name> -c <container_name>
# 返回所有标记为 app=frontend 的 pod 的合并日志。
kubectl logs -l app=frontend
kubectl explain pod
kubectl explain pod.apiVersion
kubectl get node --show-labels
NAME STATUS ROLES AGE VERSION LABELS
node1 Ready master 10d v1.19.0 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/hostname=node1
node2 Ready <none> 10d v1.19.0 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/hostname=node2
# 删除Pod
kubectl delete pod <pod-name>
# 更新Deployment.这可以通过修改 Deployment 的环境变量、镜像或其他配置来实现。
kubectl set image deployment/<deployment-name> <container-name>=<image>:<tag>
kubectl patch service istio-ingressgateway -n istio-system -p '{"spec":{"type":"NodePort"}}'
# 设置副本数量为 0,这将导致所有由该 Deployment 管理的 Pod 被终止,临时释放集群资源。
kubectl scale deployment nginx-1 --replicas=0
# 应用重启
kubectl scale deployment nginx-1 --replicas=1
kubectl logs --tail 100 -p user-klvchen-v1.0-6f67dcc46b-5b4qb > pre.log
kubectl get pods myapp-pod -o jsonpath={.spec.containers[*].name}
kubectl expose [RESOURCE_TYPE] [RESOURCE_NAME] --port=[PORT] --target-port=[TARGET_PORT] [--type=SERVICE_TYPE]
暴露 Deployment:
kubectl expose deployment my-deployment --port=80 --type=NodePort
kubectl create secret generic secret-name from-literal=username=user --from-literal=password='****'
kubectl wait等待pod
$ kubectl wait ([-f FILENAME] | resource.group/resource.name | resource.group [(-l label | --all)]) [–for=delete|–for condition=available|–for=jsonpath=‘{}’=value]
kubectl wait --namespace ingress-nginx --for=condition=ready pod --selector=app.kubernetes.io/component=controller --timeout=120s
将一个或多个本地端口转发到 Kubernetes 集群中的 Pod
若pod内服务没有通过service对外暴露的话,无法去调试pod内的服务,使用kubectl port-forward
kubectl port-forward [POD_NAME] [LOCAL_PORT]:[POD_PORT]
kubectl port-forward my-pod 9090:8080
这会将本地的 9090 端口转发到 my-pod 的 8080 端口。
# 将本地文件复制到容器中:
kubectl cp ./local/file.txt <pod-name>:<container-path>
# 从容器复制文件到本地:
kubectl cp <pod-name>:<container-path>/file.txt ./local/
# 复制子容器中的文件:
kubectl cp <pod-name>:<container-name>/file.txt ./local/
# 使用多个源和目标路径进行批量复制:
kubectl cp <source-pod>:<source-path> <destination-pod>:<destination-path>
kubectl set image deploy/nginx-deployment nginx=nginx:1.11
kubectl rollout status deploy/nginx-deployment
kubectl rollout history deploy/nginx-deployment
kubectl rollout history deploy/nginx-deployment --revision=1
kubectl scale deploy/nginx-deployment --replicas=5
kubectl rollout history deploy/nginx-deployment --revision=3
# 回滚到上一个版本
kubectl rollout undo deploy/nginx-deployment
# 回滚到指定版本
kubectl rollout undo deploy/nginx-deployment --to-revision=1
kubectl get ns
NAME STATUS AGE
default Active 10d
kube-system Active 10d
kube-public Active 10d
my-custom-ns Active 3d
kubectl get all
kubectl get service serviceName -o yaml > backup.yaml