部署环境
IP地址 | 主机名 | 功能 |
---|---|---|
10.1.32.230 | k8s-deploy-test | 部署节点,不承担实际作用 |
10.1.32.231 | k8s-master-test01 | master节点 |
10.1.32.232 | k8s-master-test02 | master节点 |
10.1.32.233 | k8s-master-test03 | master节点 |
10.1.32.240 | k8s-nginx-test | 负载均衡节点,实际生产中应为HA架构 |
10.1.32.234 | k8s-node01-test01 | node节点 |
10.1.32.235 | k8s-node02-test02 | node节点 |
10.1.32.236 | k8s-node03-test03 | node节点 |
创建CA证书和密钥
安装cfssl工具集(k8s-deploy):
cfssl工具用于快速创建证书请求并生成各类证书文件:
mkdir -p /opt/k8s/cert && cd /opt/k8s
wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 && mv cfssl_linux-amd64 /opt/k8s/bin/cfssl
wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 && mv cfssljson_linux-amd64 /opt/k8s/bin/cfssljson
wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64 && mv cfssl-certinfo_linux-amd64 /opt/k8s/bin/cfssl-certinfo
chmod +x /opt/k8s/bin/*
export PATH=/opt/k8s/bin:$PATH
创建CA证书(k8s-deploy):
CA证书为集群顶级证书(根证书),后续所有的应用的证书都由该证书颁发:
cd /opt/k8s/work/
cat > ca-config.json << EOF
{
"signing": {
"default": {
"expiry": "87600h"
},
"profiles": {
"kubernetes": {
"usages": [
"signing",
"key encipherment",
"server auth",
"client auth"
],
"expiry": "87600h"
}
}
}
}
EOF
- expiry,证书有效期,单位为小时,这里设置为10年。
- server auth,client可以用该证书对server提供的证书进行验证。
- client auth,server可以用该证书对client提供的证书进行验证。
创建一个证书签名请求文件,添加如下内容:
cat > ca-csr.json << EOF
{
"CN": "kubernetes",
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"ST": "Shanghai",
"L": "Shanghai",
"O": "dominos",
"OU": "ops"
}
],
"ca": {
"expiry": "87600h"
}
}
EOF
- CN,Common Name,kube-apiserver从证书中提取该字段作为请求的用户名 (User Name),浏览器使用该字段验证网站是否合法。
- O,Organization,kube-apiserver从证书中提取该字段作为请求用户所属的组 (Group)。
- kube-apiserver将提取的User、Group作为RBAC授权的用户标识。
通过ca证书和证书签名请求生成密钥对:
cfssl gencert -initca ca-csr.json | cfssljson -bare ca
生成私钥和证书,结构如下图:
分发CA证书文件(k8s-deploy):
将生成的pem文件及config文件发送到各节点:
cd /opt/k8s/work
source /opt/k8s/bin/environment.sh
for node_ip in ${NODE_IPS[@]}
do
echo ">>> ${node_ip}"
ssh root@${node_ip} "mkdir -p /etc/kubernetes/cert"
scp ca*.pem ca-config.json root@${node_ip}:/etc/kubernetes/cert
done
文档更新时间: 2021-09-02 17:22 作者:闻骏