当前位置: 首页 > article >正文

《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集群运维实战


http://www.kler.cn/news/18557.html

相关文章:

  • MySQL:数学函数和字符串函数
  • VMware NSX Advanced Load Balancer (NSX ALB) 22.1.3 - 负载均衡平台
  • 从零构建自己的脚手架
  • 【多线程初阶三】简单了解wait和notify方法~
  • [Go语言实战]并发模式runner
  • iOS输入限制表情输入、最大字符、正则过滤
  • Geoffrey Hinton对于AI的警示 20230507
  • SQL 招聘网站岗位数据分析
  • 数据挖掘笔记
  • Spring-AOP
  • 文心一言 VS chatgpt (6)-- 算法导论2.3 1~2题
  • macOS的CAOpenGLLayer中如何启用OpenGL3.2 core profile
  • Oracle监控账号创建【Prometheus】
  • webstorm 创建harthat项目
  • AI 工具合辑盘点(七)持续更新 之 AI 音乐制作工具
  • 【运动规划算法项目实战】如何利用AABB作碰撞检测(附ROS C++代码)
  • SQL学习日记
  • 从文字到语义:文本分词和词性标注的原理与实现
  • Gradio的web界面演示与交互机器学习模型,安装和使用《1》
  • 拐点已至!被比亚迪赶超,大众中国打响「翻身战」
  • 单元测试 - 集成H2 Dao测测试
  • 【Redis7】Redis7 持久化(重点:RDB与AOF重写机制)
  • 名称空间(namespaces)与作用域
  • [LeetCode周赛复盘] 第 344 场周赛20230507
  • 从不同视角来看待API数据接口
  • Unity用脚本获取物体和组件(下)
  • MySQL基础(三)基本的SELECT语句
  • eSIM证书要求-证书验证-EID
  • 第1章 Nginx简介
  • 187页9万字企业大数据治理与云平台实施方案(word)