美文网首页
kubernetes CA认证

kubernetes CA认证

作者: 羽煊 | 来源:发表于2017-10-20 14:38 被阅读0次

在给kubernetes安装dashboard时,可能会存在CA证书问题导致dashboard pod启动失败,用kubectl logs <podname> -n kube-system查看日志会发现有这样的日志存在
Expected to load root CA config from /var/run/secrets/kubernetes.io/serviceaccount/ca.crt, but got err: open /var/run/secrets/kubernetes.io/serviceaccount/ca.crt: no such file or directory
这是因为kubernetes默认创建的secrets 资源不包含用于访问apiserver的根证书
这需要重新生产证书和秘钥
1 使用easyrsa生成证书和秘钥
wget https://storage.googleapis.com/kubernetes-release/easy-rsa/easy-rsa.tar.gz
tar zxf easy-rsa.tar.gz
cd easy-rsa/easyrsa3
./easyrsa init-pki

2 创建根证书
./easyrsa --batch "--req-cn=masterip@date +%s" build-ca nopass
3 创建服务端证书和秘钥

./easyrsa --subject-alt-name="IP:masterip,IP:clusterip,DNS:kubernetes.default" build-server-full kubernetes-master server nopass

本文用例
./easyrsa --subject-alt-name="IP:192.168.100.20,IP:10.10.10.1,DNS:kubernetes.default" build-server-full kubernetes-master server nopass
./easyrsa --dn-mode=org --req-cn=kubecfg --req-org=system:master --req-c= --req-st= --req-city= --req-email= --req-ou= build-client-full kubecfg nopass
4 拷贝pki/ca.crt、pki/issued/server.crt和pki/private/server.key至指定的目录
mkdir /etc/kubernetes/pki
cp pki/ca.crt pki/issued/server.crt pki/private/server.key /etc/kubernetes/pki/
cp -fr pki/issued/kubecfg.crt /srv/kubernetes/
cp -fr pki/private/kubecfg.key /srv/kubernetes
chmod 644 /etc/kubernetes/pki/*
openssl x509 -noout -text -in /srv/kubernetes/server.crt
创建token
echo 123456,admin,admin > /srv/kubernetes/basic_auth.csv # 格式:密码,用户名,用户ID
5 更新apiserver服务启动参数
--client-ca-file=/etc/kubernetes/pki/ca.crt
--tls-cert-file=/etc/kubernetes/pki/server.crt
--tls-private-key-file=/etc/kubernetes/pki/server.key
--basic-auth-file=/srv/kubernetes/basic_auth.csv
6 更新controller-manager服务启动参数
--service_account_private_key_file=/etc/kubernetes/pki/server.key
--root-ca-file=/etc/kubernetes/pki/ca.crt
7 删除旧secrets资源

root@mon2:~# kubectl get secrets --all-namespaces
NAMESPACE     NAME                   TYPE                                  DATA      AGE
default       ceph-secret            Opaque                                1         22h
default       default-token-50p5c    kubernetes.io/service-account-token   3         4h

kubectl delete secret default-token-50p5c
8 重启apiserver 和controller-manager
systemcal restart apiserver controller-manager
9 检查新创建的secret是否包含根证书
root@mon2:~# kubectl get secrets --all-namespaces
NAMESPACE NAME TYPE DATA AGE
default ceph-secret Opaque 1 22h
default default-token-50p5c kubernetes.io/service-account-token 3 4h
kube-public default-token-667l9 kubernetes.io/service-account-token 3 4h
kube-system default-token-d9n7c kubernetes.io/service-account-token 3 4h

现在重新创建dashboard就不会出现证书找不到了

相关文章

  • kubernetes CA认证

    在给kubernetes安装dashboard时,可能会存在CA证书问题导致dashboardpod启动失败,用k...

  • Etcd v3命令行安装

    为确保安全,kubernetes 系统各组件需要使用 x509 证书对通信进行加密和认证。CA (Certific...

  • cfssl

    下载 创建CA 创建证书请求 生成CA证书和私钥 创建kubernetes证书请求文件 kubernetes证书和...

  • Kubernetes 认证服务提供商(Kubernetes Ce

    Kubernetes 认证服务提供商(Kubernetes Certified Service Provider,...

  • CA认证

    待更新

  • K8S 证书列表说明

    root CA CA 证书: 组件所需认证证书 Required certificates: kind(类型) 介...

  • Kubernetes apiserver认证

    kubernetes认证 Kubernetes集群的操作可以通过apiserver来进行操作,kubectl命令最...

  • 网络

    认证 ssl/tls 1.客户端证书认证 (TLS双向认证) CA #证书认证2.bearerToken3.Se...

  • nginx 开启https

    nginx 开启https 一、使用openssl 生成CA 创建用于认证的CA(这里叫做Root CA)首先要安...

  • kubernetes学习笔记之十一:kubernetes das

    原文:kubernetes学习笔记之十一:kubernetes dashboard认证及分级授权 - 百衲本 - ...

网友评论

      本文标题:kubernetes CA认证

      本文链接:https://www.haomeiwen.com/subject/oihvuxtx.html