K8s高频命令
-
获取资源信息,如获取 Pod、Service、Deployment等资源状态信息
bashkubectl get
-
创建资源如创建Pod、Service、Deployment等资源
bashkubectl create
-
删除资源,如删除Pod、Service、Deployment等资源
bashkubectl delete
-
应用配置文件,如引用Deployment的配置文件如,test.yml
bashkubectl apply
-
查看资源详细的信息,如查看Pod、Service、Deployment等资源的详细信息和状态
bashkubectl describe
-
在容器内部执行,如Pod内部执行命令或范文容器内部的终端
bashkubectl exec
-
将集群内的服务端转发到本地,用于 本地访问集群内的服务
bashkubectl port-forward
-
查看Pod的日志信息,如查看容器标准输出和错误标准输出
bashkubectl logs
-
调整资源的副本数,如调整Deployment的副本数
bashkubectl scale
-
控制应用的滚动更新,如进行版本升级或回滚
bashkubectl rollout
-
获取Pod的信息时,常常忘记加s,导致无法获取到Pod的状态信息
bashkubectl logs
-
调整资源的副本数,如调整Deployment的副本数
bashkubectl scale
-
控制应用的滚动更新,如进行版本升级或回滚
bashkubectl rollout
具体实现
XML
## 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请求,这时存货探针可以帮助检查这种情况并触发自动修复措施。
配置:
bash
livenessProbe:
httpGet:
path: /healthz
port: 8080
httpHeaders:
- name: X-Custom-Header
value: Awesome
initialDelaySeconds: 3
periodSeconds: 10
就绪探针(Readiness Probes)
目标:判断容器是否准备好接收流量
目的:避免将流浪发送到尚未准备好的Pod上,知道它完全启动并可以处理请求。
使用场景:刚初始化化服务,比如数据库连接池、缓存预热等。在写在服务真正准备好之前,不应该接收任何实际流量。
配置:
XML
readinessProbe:
exec:
command:
- cat
- /tmp/healthy
initialDelaySeconds: 5
periodSeconds: 10
启动探针(Startup Probes)
目标:用于确认容器中的应用以及启动完毕。
目的:对于启动时间较长的应用,提供一个额外的宽限期,在此期间不会执行存活或就绪检查,以允许应用完成其初始化过程。
使用场景:是为了解决某些服务在启动阶段需要更多时间的问题,如大型应用部署或复杂的数据加载任务。
配置:
XML
startupProbe:
tcpSocket:
port: 9999
failureThreshold: 30
periodSeconds: 10
httpGet、exec 和 tcpSocket 分别代表了三种不同的检查方法。initalDelaySeconds指定了首次健康检查前等待的时间;periodSeconds 是健康检查的频率;其他参数则更具业务需求镜像调整。请注意,所有时间单位均为秒