K8s高频命令
- 获取资源信息,如获取 Pod、Service、Deployment等资源状态信息
kubectl get
- 创建资源如创建Pod、Service、Deployment等资源
kubectl create
- 删除资源,如删除Pod、Service、Deployment等资源
kubectl delete
- 应用配置文件,如引用Deployment的配置文件如,test.yml
kubectl apply
- 查看资源详细的信息,如查看Pod、Service、Deployment等资源的详细信息和状态
kubectl describe
- 在容器内部执行,如Pod内部执行命令或范文容器内部的终端
kubectl exec
- 将集群内的服务端转发到本地,用于 本地访问集群内的服务
kubectl port-forward
- 查看Pod的日志信息,如查看容器标准输出和错误标准输出
kubectl logs
- 调整资源的副本数,如调整Deployment的副本数
kubectl scale
- 控制应用的滚动更新,如进行版本升级或回滚
kubectl rollout
- 获取Pod的信息时,常常忘记加s,导致无法获取到Pod的状态信息
kubectl logs
- 调整资源的副本数,如调整Deployment的副本数
kubectl scale
- 控制应用的滚动更新,如进行版本升级或回滚
kubectl rollout
具体实现
## kubectl get pods -o wide
-o output
用于指定输出格式,如yaml,json,wide,name等。## kubectl get pods -l app-myapp
-l --selector
根据标签选择器来过滤结果## kubectl apply -f my-resource.yaml
-f --filename
从文件中加载资源清单。可以指定多个文件。## kubectl apply -k ./path/to/kustomization
-k --kustomize
从Kustomization目录加载资源。## kubectl --context dev get pods
--context
指定要使用的上下文## kubectl --as admin get pods
--as
指定要使用的用户## kubectl --as-group=system:developers get pods
--as-group
指定要使用的用户组。## kubectl --cluster=cluster1 get pods
--cluster
指定要使用的集群## kubectl --server=https://api.example.com get pods
--server
指定API服务器的地址## kubectl --certificate-authority=/path/to/ca.crt get pods
--certficate-authority
指定CA证书的路径## kubectl --client-certificate=/path/to/client.crt get pods
--client-certificate
指定客户端证书## kubectl --client-key=/path/to/client.key get pods
--client-key
指定客户端私钥的路径。## kubectl --insecure-skip-tls-verify=true get pods
--insecure-skip-tls-verfy
跳过TLS证书验证## kubectl get pods --timeout=30s
--timeout
指定API请求的超时时间## kubectl get pods --request-timeout=30s
--request-timeout
指定API请求的超时时间(与 --timeout 类似)## kubectl get pods --watch
--watch
观察资源的变化## kubectl get pods --watch-only
--watch
观察资源的变化## kubectl get pods --watch-only
--watch-only
仅观察资源的变化而不显示初始状态## kubectl get pods --all-namespaces
--all-namespaces
操作所有命名空间## kubectl delete pods --all
--all
对于某些命令,可以悬着所有资源## kubectl get pods --field-serlector=status.phase=Runimg
--field-selector
根据字段选择器来过滤结果## kubectl --kubeconfig=/path/to/kubeconfig get pods
--kubecofnig
指定kubeconfig文件的位置
具体事务分析
K8s的pod健康检查机制
K8s的Pod健康检查机制用于确保容器在运行时保持健康状态。如果一个容器不健康,K8s可以拆去措施来恢复服务,例如重启容器或嗲调度新的Pod。K8s提供了两种主要类型的健康检查:Livensess Probe 和 Readiness Probe,以及减少使用的Statup Probe
Liveness Probe(存活探针)
目标:确定容器是否正在运行。如果存活探针失败,Kubernetes将重启该容器。
目的:防止容器陷入死锁或无响应状态,确保应用始终处于工作状态。
使用场景:存活探针适合那些可能进入非响应状态但仍保持运行的应用程序。例如,Web内存可能会又内存泄露或其他问题变得不能响应HTTP请求,这时存货探针可以帮助检查这种情况并触发自动修复措施。
配置:
livenessProbe:httpGet:path: /healthzport: 8080httpHeaders:- name: X-Custom-Headervalue: AwesomeinitialDelaySeconds: 3periodSeconds: 10
就绪探针(Readiness Probes)
目标:判断容器是否准备好接收流量
目的:避免将流浪发送到尚未准备好的Pod上,知道它完全启动并可以处理请求。
使用场景:刚初始化化服务,比如数据库连接池、缓存预热等。在写在服务真正准备好之前,不应该接收任何实际流量。
配置:
readinessProbe:exec:command:- cat- /tmp/healthyinitialDelaySeconds: 5periodSeconds: 10
启动探针(Startup Probes)
目标:用于确认容器中的应用以及启动完毕。
目的:对于启动时间较长的应用,提供一个额外的宽限期,在此期间不会执行存活或就绪检查,以允许应用完成其初始化过程。
使用场景:是为了解决某些服务在启动阶段需要更多时间的问题,如大型应用部署或复杂的数据加载任务。
配置:
startupProbe:tcpSocket:port: 9999failureThreshold: 30periodSeconds: 10
httpGet、exec 和 tcpSocket 分别代表了三种不同的检查方法。initalDelaySeconds指定了首次健康检查前等待的时间;periodSeconds 是健康检查的频率;其他参数则更具业务需求镜像调整。请注意,所有时间单位均为秒