目录

    1. 自动签发 Ingress 证书

    1. 安装 cert-manager
    kubectl create namespace cert-manager
    kubectl label namespace cert-manager certmanager.k8s.io/disable-validation=true
    helm repo add jetstack https://charts.jetstack.io
    helm repo update
    helm install \
      --name cert-manager \
      --namespace cert-manager \
      --version v0.10.0 \
      jetstack/cert-manager
    
    1. 创建一个全局的签发机构

    新建文件 issuer.yaml

    apiVersion: certmanager.k8s.io/v1alpha1
    kind: ClusterIssuer
    metadata:
      name: letsencrypt-prod
      namespace: cert-manager
    spec:
      acme:
        server: https://acme-v02.api.letsencrypt.org/directory
        email: admin@domain.com
        privateKeySecretRef:
          name: letsencrypt-prod
        http01: {}
    

    创建签发机构

    kubectl apply -f issuer.yaml
    
    1. 签发证书

    新建文件 cert.yaml

    apiVersion: certmanager.k8s.io/v1alpha1
    kind: Certificate
    metadata:
      name: ingress-cert-name
      namespace: ingress-namespace
    spec:
      secretName: ingress-domain-com-tls
      issuerRef:
        name: letsencrypt-prod
        kind: ClusterIssuer
      dnsNames:
      - ingress.domain.com
      acme:
        config:
        - http01:
            ingressClass: traefik
          domains:
          - ingress.domain.com
    

    签发证书

    kubectl apply -f cert.yaml
    

    2. Kubernetes 常见故障排查

    2.1 Node 异常

    故障可能:

    • kubelet 进程异常
    • 未安装 cni 插件
    • docker 异常
    • 磁盘空间不足
    • 内存不足

    定位方式:

    • kubectl describe node ,查看节点事件
    • systemctl status kubelet ,查看 kubelet 状态
    • journalctl -u kubelet -f ,查看系统日志
    • top,查看系统 cpu、内存占用情况
    • du -sh、df -h,查看磁盘使用情况

    2.2 Pod 异常

    Pod 可能处于三种非正常运行状态,长时间 Pending、Waiting、CrashBackoff

    • Pending

    kubectl describe pod,查看事件。

    可能原因:可用资源不足、不满足亲和性策略,节点 taints 不允许调度

    • Waiting

    可能原因:镜像拉取失败。请尝试人工拉取镜像,检查镜像名、权限、网络是否符合预期。

    • CrashBackoff

    可能原因:服务启动失败,依赖不能完全满足。请查看 kubectl logs 日志,或进入 Pod 、Docker 调试。

    2.3 Service 异常

    • endpoint 未正常添加

    可能原因:Pod 异常或选择器没有选中任何 Pod。检查 service 的选择器配置;执行 kubectl describe service\endpoints\pod 查看是否有异常事件。

    • service 端口映射错误

    检查 service 端口映射,是否与 Pod 端口、访问的端口一致。

    • 网络配置问题

    检查 kube-proxy 、iptables 或 ipvs 是否异常。

    3. 参考