可观察性

Table of Contents

探针

存活性

使用一条命令来确定何时重启容器:

apiVersion: v1
kind: Pod
metadata:
  name: my-liveness-pod
spec:
  containers:
  - name: myapp-container
    image: busybox
    command: ['sh', '-c', "echo Hello, Kubernetes! && sleep 3600"]
    livenessProbe:
      exec:
        command:
        - echo
        - testing
      initialDelaySeconds: 5
      periodSeconds: 5
  • initialDelaySeconds:容器启动后第一次执行探测是需要等待多少秒
  • periodSeconds:执行探测的频率。默认是10秒,最小1秒

就绪性

使用一个http请求(get)来确定容器是否 已经就绪可以接受流量

apiVersion: v1
kind: Pod
metadata:
  name: my-readiness-pod
spec:
  containers:
  - name: myapp-container
    image: nginx
    readinessProbe:
      httpGet:
        path: /
        port: 80
      initialDelaySeconds: 5
      periodSeconds: 5

日志

获取容器日志:

kubectl logs counter

对于多容器的pod来说:

kubectl logs <pod name> -c <container name>

保存日志到文件:

kubectl logs counter > counter.log

指标

安装metrics服务器:

cd ~/
git clone https://github.com/linuxacademy/metrics-server

kubectl apply -f ~/metrics-server/deploy/1.8+/

验证:

kubectl get --raw /apis/metrics.k8s.io/

监控

使用 kubectl top 命令可以监控资源使用:

kubectl top pods

kubectl top nodes

按资源消耗排序:

kubectl top pod resource-consumer-big

调试

差错

kubectl get pods

kubectl get namespace

kubectl get pods --all-namespaces

kubectl describe pod nginx -n nginx-ns

修复

直接编辑

kubectl edit pod nginx -n nginx-ns

导出文件

kubectl get pod nginx -n nginx-ns -o yaml --export > nginx-pod.yml

重启容器

kubectl delete pod nginx -n nginx-ns

kubectl apply -f nginx-pod.yml -n nginx-ns