您现在的位置是:首页 >技术交流 >《Kubernetes证书篇:基于cfssl工具集一键生成二进制kubernetes集群相关证书(方法一)》网站首页技术交流
《Kubernetes证书篇:基于cfssl工具集一键生成二进制kubernetes集群相关证书(方法一)》
简介《Kubernetes证书篇:基于cfssl工具集一键生成二进制kubernetes集群相关证书(方法一)》
一、背景信息
Kubernetes 需要 PKI 证书才能进行基于 TLS 的身份验证。如果你是使用 kubeadm 安装的 Kubernetes, 则会自动生成集群所需的证书。如果你是使用二进制安装的 Kubernetes,则需要自己手动生成集群所需的证书。
1、首先从etcd算起
1、etcd CA证书
2、etcd对外提供服务,要有一套etcd server证书
3、etcd各节点之间进行通信,要有一套etcd peer证书
4、etcd client证书
证书列表,如下所示:。
root@etcd01:~# tree /etc/kubernetes/pki/etcd/
/etc/kubernetes/pki/etcd/
├── ca-key.pem
├── ca.pem
├── healthcheck-client-key.pem
├── healthcheck-client.pem
├── peer-key.pem
├── peer.pem
├── server-key.pem
└── server.pem
2、其次从kubernetes算起
1、kubernetes CA证书
2、Kubelet 的客户端证书,用于 API 服务器身份验证
3、Kubelet 服务端证书, 用于 API 服务器与 Kubelet 的会话
4、API 服务器端点的证书
5、集群管理员的客户端证书,用于 API 服务器身份认证
6、API 服务器的客户端证书,用于和 Kubelet 的会话
7、API 服务器的客户端证书,用于和 etcd 的会话
8、控制器管理器的客户端证书或 kubeconfig,用于和 API 服务器的会话
9、调度器的客户端证书或 kubeconfig,用于和 API 服务器的会话
10、前端代理的客户端及服务端证书
证书列表,如下所示:。
root@k8s-master-65:~# tree /etc/kubernetes
/etc/kubernetes
├── admin.kubeconfig
├── controller-manager.kubeconfig
├── kubelet-bootstrap.kubeconfig
├── kube-proxy.kubeconfig
├── manifests
├── pki
│ ├── apiserver-etcd-client-key.pem
│ ├── apiserver-etcd-client.pem
│ ├── apiserver-key.pem
│ ├── apiserver-kubelet-client-key.pem
│ ├── apiserver-kubelet-client.pem
│ ├── apiserver.pem
│ ├── ca-key.pem
│ ├── ca.pem
│ ├── etcd
│ │ ├── ca-key.pem
│ │ └── ca.pem
│ ├── front-proxy-ca-key.pem
│ ├── front-proxy-ca.pem
│ ├── front-proxy-client-key.pem
│ ├── front-proxy-client.pem
│ ├── sa.key
│ ├── sa.pub
│ └── token.csv
└── scheduler.kubeconfig
二、功能简介
1、支持k8s集群一键生产所有相关证书文件及kubeconfig文件
2、支持单master集群、多master集群
目录信息如下所示:
三、工具下载
基于cfssl工具集一键生成二进制kubernetes集群相关证书工具
四、操作步骤
1、编辑env.conf文件
# https://kubernetes.io/zh-cn/docs/setup/best-practices/certificates/
# cfssl生成证书过程日志打印级别<0:调试 1:信息 2:警告 3:错误 4:严重>
export loglevel="3"
# etcd集群所有主机ip地址和主机名,<建议多写几个ip,方便后期扩容>,ip地址之间必须使用逗号分隔,根据实际情况修改
export etcd_hostname_list="127.0.0.1,etcd01,etcd02,etcd03,192.168.1.62,192.168.1.63,192.168.1.64"
# cluster name,默认不修改
export cluster_name="kubernetes"
# apiserver的service ip地址(一般是svc网段的第一个ip),虚拟IP
export kube_svc_ip="10.96.0.1"
# 单master节点请填写<主机内网ip地址 + 主机名>,ip地址之间必须使用逗号分隔
# 多master集群请填写<所有maser节点主机ip地址 + 所有master节点主机名 + vip地址或代理ip地址>
export kube_apiserver_hostname_list="192.168.1.65,k8s-master-65"
# API Server地址
# 多master集群请填写代理ip或vip的地址和端口
export kube_api_server="192.168.1.65:6443"
2、执行脚本操作
./op.sh build
如下图所示:
总结:整理不易,如果对你有帮助,可否点赞关注一下?
更多详细内容请参考:企业级K8s集群运维实战
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。