kubernetes单Master集群部署--环境准备(1)
作者:@skyflask
转载本文请注明出处:https://www.cnblogs.com/skyflask/articles/11357269.html
目录
1、Kubernetes部署方式
2、软件环境
3、服务器角色
4、自签SSL证书
5、架构图
6、安装环境目录
1、Kubernetes部署方式
- minikube
Minikube是一个工具,可以在本地快速运行一个单点的Kubernetes,尝试Kubernetes或日常开发的用户使用。不能用于生产环境。
官方地址:https://kubernetes.io/docs/setup/minikube/
- kubeadm
Kubeadm也是一个工具,提供kubeadm init和kubeadm join,用于快速部署Kubernetes集群。
官方地址:https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm/
- 二进制包
从官方下载发行版的二进制包,手动部署每个组件,组成Kubernetes集群。
小结:
生产环境中部署Kubernetes集群,只有Kubeadm和二进制包可选,Kubeadm降低部署门槛,但屏蔽了很多细节,遇到问题很难排查。我们这里使用二进制包部署Kubernetes集群,我也是推荐大家使用这种方式,虽然手动部署麻烦点,但学习很多工作原理,更有利于后期维护。
2、软件环境
软件 |
版本 |
操作系统 |
CentOS7.5_x64 |
Docker |
18-ce |
Kubernetes |
1.12 |
3、服务器角色
角色 |
IP |
组件 |
k8s-master |
10.11.97.191 |
kube-apiserver,kube-controller-manager,kube-scheduler,etcd |
k8s-node1 |
10.11.97.71 |
kubelet,kube-proxy,docker,flannel,etcd |
k8s-node2 |
10.11.97.181 |
kubelet,kube-proxy,docker,flannel,etcd |
4、自签SSL证书
CA(Certification Authority)证书,指的是权威机构给我们颁发的证书。
密钥就是用来加解密用的文件或者字符串。密钥在非对称加密的领域里,指的是私钥和公钥,他们总是成对出现,其主要作用是加密和解密。常用的加密强度是2048bit。
RSA即非对称加密算法。非对称加密有两个不一样的密码,一个叫私钥,另一个叫公钥,用其中一个加密的数据只能用另一个密码解开,用自己的都解不了,也就是说用公钥加密的数据只能由私钥解开。
证书签名请求(CSR)
CSR(Certificate Signing Request),它是向CA机构申请数字×××书时使用的请求文件。在生成请求文件前,我们需要准备一对对称密钥。私钥信息自己保存,请求中会附上公钥信息以及国家,城市,域名,Email等信息,CSR中还会附上签名信息。
当我们准备好CSR文件后就可以提交给CA机构,等待他们给我们签名,签好名后我们会收到crt文件,即证书。
注意:CSR并不是证书。而是向权威证书颁发机构获得签名证书的申请。
把CSR交给权威证书颁发机构,权威证书颁发机构对此进行签名,完成。保留好CSR
,当权威证书颁发机构颁发的证书过期的时候,你还可以用同样的CSR
来申请新的证书,key保持不变.
数字签名
数字签名就是"非对称加密+摘要算法",其目的不是为了加密,而是用来防止他人篡改数据。
其核心思想是:比如A要给B发送数据,A先用摘要算法得到数据的指纹,然后用A的私钥加密指纹,加密后的指纹就是A的签名,B收到数据和A的签名后,也用同样的摘要算法计算指纹,然后用A公开的公钥解密签名,比较两个指纹,如果相同,说明数据没有被篡改,确实是A发过来的数据。
假设C想改A发给B的数据来欺骗B,因为篡改数据后指纹会变,要想跟A的签名里面的指纹一致,就得改签名,但由于没有A的私钥,所以改不了,如果C用自己的私钥生成一个新的签名,B收到数据后用A的公钥根本就解不开。
常用的摘要算法有MD5、SHA1、SHA256。
使用私钥对需要传输的文本的摘要进行加密,得到的密文即被称为该次传输过程的签名。
数字证书和公钥
数字证书则是由证书认证机构(CA)对证书申请者真实身份验证之后,用CA的根证书对申请人的一些基本信息以及申请人的公钥进行签名(相当于加盖发证书机 构的公章)后形成的一个数字文件。实际上,数字证书就是经过CA认证过的公钥,除了公钥,还有其他的信息,比如Email,国家,城市,域名等。
k8s证书生成过程
1、创建认证中心(CA)
CFSSL可以创建一个获取和操作证书的内部认证中心。
运行认证中心需要一个CA证书和相应的CA私钥。任何知道私钥的人都可以充当CA颁发证书。因此,私钥的保护至关重要。
生成CA证书和私钥(root 证书和私钥)
创建一个文件ca-csr.json
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | { "CN" : "kubernetes" , "key" : { "algo" : "rsa" , "size" : 2048 }, "names" : [ { "C" : "CN" , "L" : "Beijing" , "ST" : "Beijing" , "O" : "k8s" , "OU" : "System" } ] } |
-
CN: Common Name,浏览器使用该字段验证网站是否合法,一般写的是域名。非常重要。浏览器使用该字段验证网站是否合法
-
C: Country, 国家
-
L: Locality,地区,城市
-
O: Organization Name,组织名称,公司名称
-
OU: Organization Unit Name,组织单位名称,公司部门
-
ST: State,州,省
生成CA证书和CA私钥和CSR(证书签名请求):
# cfssl gencert -initca ca-csr.json | cfssljson -bare ca ## 初始化ca
# ls ca*
ca.csr ca-csr.json ca-key.pem ca.pem
该命令会生成运行CA所必需的文件ca-key.pem(私钥)和ca.pem(证书),还会生成ca.csr(证书签名请求),用于交叉签名或重新签名。
使用现有的CA私钥,重新生成:
ca-key.pem
ca.pem
ca.csr
1 | cfssl gencert -initca -ca-key key.pem ca-csr.json | cfssljson -bare ca |
使用现有的CA私钥和CA证书,重新生成:
1 | cfssl gencert -renewca -ca cert.pem -ca-key key.pem |
查看cert(证书信息):
查看CSR(证书签名请求)信息:
cat ca-config.json
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | { "signing" : { "default" : { "expiry" : "87600h" }, "profiles" : { "kubernetes" : { "expiry" : "87600h" , "usages" : [ "signing" , "key encipherment" , "server auth" , "client auth" ] } } } } |
这个策略,有一个默认的配置,和一个profile
,可以设置多个profile
,这里的profile
是kubernetes。
-
默认策略,指定了证书的有效期是一年(8760h)
-
etcd策略,指定了证书的用途
-
signing, 表示该证书可用于签名其它证书;生成的 ca.pem 证书中 CA=TRUE
-
server auth:表示 client 可以用该 CA 对 server 提供的证书进行验证
-
client auth:表示 server 可以用该 CA 对 client 提供的证书进行验证
cfssl常用命令:
-
cfssl gencert -initca ca-csr.json | cfssljson -bare ca ## 初始化ca
-
cfssl gencert -initca -ca-key key.pem ca-csr.json | cfssljson -bare ca ## 使用现有私钥, 重新生成
-
cfssl certinfo -cert ca.pem
-
cfssl certinfo -csr ca.csr
5、架构图
6、安装环境目录
ll /opt/kubernetes/
1 2 3 4 5 | [root@k8s-master01 cfg]# ll /opt/kubernetes/ total 12 drwxr-xr-x 2 root root 4096 Jul 26 07:31 bin drwxr-xr-x 2 root root 4096 Jul 26 08:00 cfg drwxr-xr-x 2 root root 4096 Jul 26 07:55 ssl |
- bin:二进制目录
- cfg:配置文件目录
- ssl:证书目录
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」