6、Kubernetes master部署
6.1、ApiServer自签证书
apiserver通过https方式进行访问,因此需要证书自签,有两种实现方式:
- (1)添加可信赖的IP列表(
此处使用); - (2)携带ca证书发送;
6.1.1、自签证书颁发机构(CA)
接着《基于二进制方式搭建K8s集群-ETCD篇》文章,进入/root/TLS/k8s目录。
cd /root/TLS/k8s
- 自签CA(生成CA证书和私钥):
【生成CA 配置文件】
#过期时间10年
cat > ca-config.json << EOF
{
"signing": {
"default": {
"expiry": "87600h"
},
"profiles": {
"kubernetes": {
"expiry": "87600h",
"usages": [
"signing",
"key encipherment",
"server auth",
"client auth"
]
}
}
}
}
EOF
#expiry:其中expiry是过期时间,可以指定多个;
#signing:表示该证书可以签名其他证书;
#server auth:表示客户端可以用该证书对服务端进行验证;
#client auth:表示服务端可以用该证书对客户端进行验证;
【生成CA证书签名请求】
cat > ca-csr.json << EOF
{
"CN": "kubernetes",
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"L": "Beijing",
"ST": "Beijing",
"O": "k8s",
"OU": "System"
}
]
}
EOF
#CN:Common Name,kube-apiserver 从证书中提取该字段作为请求的用户名 (User Name),浏览器使用该字段验证网站是否合法;
#O:Organization,kube-apiserver 从证书中提取该字段作为请求用户所属的组 (Group);
- 生成CA证书和私钥:
#执行命令:生成的ca-key.pem 和 ca.pem分别为私钥和证书
cfssl gencert -initca ca-csr.json | cfssljson -bare ca -

6.1.2、使用自签CA签发Kubernetes master https证书
【创建 kubernetes master node证书申请文件】
cat > server-csr.json << EOF
{
"CN": "kubernetes",
"hosts": [
"10.0.0.1",
"127.0.0.1",
"192.168.0.1",
"192.168.0.2",
"192.168.0.3",
"kubernetes",
"kubernetes.default",
"kubernetes.default.svc",
"kubernetes.default.svc.cluster",
"kubernetes.default.svc.cluster.local"
],
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"ST": "Beijing",
"L": "Beijing",
"O": "k8s",
"OU": "System"
}
]
}
EOF
注:上数文件hosts字段中IP列表为所有kubernetes集群节点通信IP,一个都不能少。为了方便后期集群扩容,可以多写几个预留的IP。
- 生成证书
#执行命令:生成的server-key.pem 和 server.pem 分别为私钥和证书
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes server-csr.json

最低0.47元/天 解锁文章
2589





