目录
一、CA证书
CA证书中包含密钥对 (rsa 非对称密钥)
CA证书可以对通信加密,同时标识身份的唯一性
.pem :证书
二、制作K8S集群证书流程
1.制作官方颁发的证书
① 创建ca密钥(文件定义) ca-key.pem
② 创建ca证书(文件定义) ca.pem
2.制作master端的证书
用于内部加密通讯,同时为了给与Client端颁发master签名的证书
①创建过程:需要以下几步
1)设置私钥 确保安全加密 .pem
2)私钥签名 确保身份真实 .csr
3)制作证书(需要CA官方颁发) cert.pem
② 创建私钥
③ 私钥签名
④ 使用ca证书与密钥证书签名
3.制作worker node端证书
① 由master端制作node端密钥
② 对node端的证书进行签名
③ 创建一个配置文件(区别于服务端,进行客户端验证)
④ 生成证书
CA 证书机构 (签发电子证书)
在 Kubernetes 的组件之间进行通信时,数字证书的验证是在协议层面通过 TLS 完成的,除了需要在建立通信时提供相关的证书和密钥外,在应用层面并不需要进行特殊处理。
采用 TLS 进行验证有两种方式:
(1)服务器单向认证
只需要服务器端提供证书,客户端通过服务器端证书验证服务的身份,但服务器并不验证客户端的身份。这种情况一般适用于对Internet开放的服务,例如搜索引擎网站,任何客户端都可以连接到服务器上进行访问,但客户端需要验证服务器的身份,以避免连接到伪造的恶意服务器。
(3)双向 TLS 认证
除了客户端需要验证服务器的证书,服务器也要通过客户端证书验证客户端的身份。这种情况下服务器提供的是敏感信息,只允许特定身份的客户端访问。在Kubernetes中,各个组件提供的接口中包含了集群的内部信息。如果这些接口被非法访问,将影响集群的安全,因此组件之间的通信需要采用双向TLS认证。即客户端和服务器端都需要验证对方的身份信息。在两个组件进行双向认证时,会涉及到下面这些证书相关的文件:
① 服务器端证书:服务器用于证明自身身份的数字证书,里面主要包含了服务器端的公钥以及服务器的身份信息。
② 服务器端私钥:服务器端证书中包含的公钥所对应的私钥。公钥和私钥是成对使用的,在进行TLS验证时,服务器使用该私钥来向客户端
证明自己是服务器端证书的拥有者
③ 客户端证书:客户端用于证明自身身份的数字证书,里面主要包含了客户端的公钥以及客户端的身份信息。
④ 客户端私钥:客户端证书中包含的公钥所对应的私钥,同理,客户端使用该私钥来向服务器端证明自己是客户端证书的拥有者。
⑤ 服务器端 CA 根证书:签发服务器端证书的 CA 根证书,客户端使用该 CA 根证书来验证服务器端证书的合法性。
⑥ 客户端端 CA 根证书:签发客户端证书的 CA 根证书,服务器端使用该 CA 根证书来验证客户端证书的合法性。
三、K8S 二进制集群
k8s 默认有三种部署方式:Minikube 、kubeadm、 二进制 →工具部署/云平台部署
1.分类
1)ETCD集群
2)FLANNEL网络
3)单master部署
4)node部署
5)多master署(LB部署haproxy + keepalived 或者nginx + keepalived )
2.节点分配
负载均衡(lb)
nginx01 主机ip/24
nginx02 主机ip/24
master节点
master01 主机ip/24
master02 主机ip/24
Node节点
node01 主机ip/24
node02 主机ip/24
四、ETCD集群
1.环境
官网源码包下载:https://github.com/kubernetes/kubernetes/releases?after=v1.13.1
ETCD 二进制包地址:https://github.com/etcd-io/etcd/releases
2. K8S
Master:192.168.22.228/24 kube-apiserver kube-controller-manager kube-scheduler etcd
Node01:192.168.22.168/24 kubelet kube-proxy docker flannel etcd
Node02:192.168.22.206/24 kubelet kube-proxy docker flannel etcd
3.docker
yum install -y yum-utils device-mapper-persistent-data lvm2
cd /etc/yum.repos.d/
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install -y docker-ce
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
systemctl start docker
systemctl enable docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://jqqwsp8f.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
sysctl -p
systemctl restart network
systemctl restart docker
swapoff -a
4.ETCD集群
master节点操作
(1)定义两个脚本
mkdir k8s
cd k8s
etcd-cert.sh 是证书制作的脚本
etcd.sh etcd启动脚本