温馨提示×

centos k8s怎么管理证书

小樊
42
2026-10-18 01:31:47
栏目: 智能运维

在 CentOS 上运行 Kubernetes(k8s)时,“管理证书”通常包含 两类场景:

  1. Kubernetes 自身组件证书(kube-apiserver、etcd、kubelet 等)
  2. 业务/Ingress 证书(HTTPS 证书、域名证书)

下面按场景给你一套实用管理方案。


一、Kubernetes 自身证书管理(核心)

1. 证书位置(kubeadm 部署)

默认在:

/etc/kubernetes/pki/

常见证书:

  • ca.crt / ca.key
  • apiserver.crt / apiserver.key
  • etcd/ 目录
  • front-proxy*
  • sa.key / sa.pub

2. 查看证书有效期

openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -dates

3. 证书过期时间(默认)

  • kubeadm 默认证书有效期:1 年
  • CA 证书:10 年

4. 证书续期(kubeadm)

kubeadm certs check-expiration
kubeadm certs renew all

续期后需重启相关组件:

systemctl restart kubelet

如 apiserver 不生效,可删除 pod 让其重建:

kubectl delete pod -n kube-system kube-apiserver-*

5. 延长证书有效期(新集群)

初始化时:

kubeadm init --config kubeadm.yaml

kubeadm.yaml 中可指定:

apiVersion: kubeadm.k8s.io/v1beta3
kind: ClusterConfiguration
certificatesDir: /etc/kubernetes/pki

二、使用 cert-manager 管理业务证书(强烈推荐)

1. 安装 cert-manager(CentOS + k8s)

kubectl apply -f https://github.com/cert-manager/cert-manager/releases/latest/download/cert-manager.yaml

检查:

kubectl get pods -n cert-manager

2. 申请免费 HTTPS 证书(Let’s Encrypt)

apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: letsencrypt-prod
spec:
  acme:
    server: https://acme-v02.api.letsencrypt.org/directory
    email: you@example.com
    privateKeySecretRef:
      name: letsencrypt-prod
    solvers:
    - http01:
        ingress:
          class: nginx

申请证书:

apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
  name: example-tls
spec:
  secretName: example-tls
  dnsNames:
  - www.example.com
  issuerRef:
    name: letsencrypt-prod
    kind: ClusterIssuer

三、Ingress 使用证书

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: example
spec:
  tls:
  - hosts:
    - www.example.com
    secretName: example-tls
  rules:
  - host: www.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: example-svc
            port:
              number: 80

四、手动证书(不推荐但可用)

kubectl create secret tls example-tls \
  --cert=example.crt \
  --key=example.key \
  -n default

五、CentOS 系统级注意事项

  • 时间必须同步(证书校验依赖时间)
timedatectl
chronyc sources
  • 防火墙/SELinux 不影响证书,但影响 80/443 校验

六、推荐实践总结

✅ kubeadm 集群:定期 kubeadm certs renew
✅ 业务证书:用 cert-manager
✅ 监控证书过期(Prometheus + alert)
❌ 不建议手动改 ca 证书


如果你愿意,可以告诉我:

  • k8s 版本
  • 是否是 kubeadm 部署
  • 是否需要内网/自签 CA

我可以直接给你可复制的一套配置。

0 踩