本文承接: Kubernetes 集群部署(二)(flannel 网络配置)
Kubernetes 集群部署(三)(部署 master/node 组件)
1.部署 master(组件)
①创建 K8S 工作目录及证书目录
[root@master01 ~]# mkdir /opt/kubernetes/{cfg,bin,ssl} -p '//创建k8s工作目录'
[root@master01 ~]# cd k8s/
[root@master01 k8s]# mkdir k8s-cert '//创建K8S存储证书的目录'
[root@master01 k8s]# cd k8s-cert/
②撰写创建证书脚本并执行
[root@master01 k8s-cert]# vim k8s-cert.sh '//撰写创建证书的脚本'
cat > ca-config.json <<EOF '//定义ca证书,格式为json'
{
"signing": {
"default": {
"expiry": "87600h" '//周期为87600h=10年'
},
"profiles": {
"kubernetes": {
'//k8s'
"expiry": "87600h",
"usages": [
"signing",
"key encipherment",
"server auth",
"client auth"
]
}
}
}
}
EOF
cat > ca-csr.json <<EOF '//实现证书,签名'
{
"CN": "kubernetes",
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"L": "Beijing",
"ST": "Beijing",
"O": "k8s", '//表示为单元'
"OU": "System"
}
]
}
EOF
cfssl gencert -initca ca-csr.json | cfssljson -bare ca -
'//生成证书,创建,初始化ca,使用到ca签名文件;使用cfssjson格式创建一个ca证书'
#-----------------------
cat > server-csr.json <<EOF '//使用server端证书,json格式'
{
"CN": "kubernetes",
"hosts": [ '//这里考虑后续多节点,提前添加2个nginx为负载均衡群集'
"10.0.0.1", '//内部集群通讯会用到的IP地址'
"127.0.0.1", '//自身回环地址'
"192.168.126.11", '//master01'
"192.168.126.12", '//master02'
"192.168.126.15" '//nginx01'
"192.168.126.16" '//nginx02'
"192.168.126.100", '//VIP(漂移)'
"kubernetes",
"kubernetes.default",
"kubernetes.default.svc",
"kubernetes.default.svc.cluster",
"kubernetes.default.svc.cluster.local"
],
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"L": "BeiJing",
"ST": "BeiJing",
"O": "k8s",
"OU": "System"
}
]
}
EOF
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes server-csr.json | cfssljson -bare server
'//生成,创建,使用ca证书与秘钥,ca配置文件,指定名称生成文件'
'//使用cfssljson格式创建名为server的证书'
#-----------------------
'//需要一个管理员身份的绑定来具备操作资源的权限,以下来制作相关证书'
cat > admin-csr.json <<EOF
{
"CN": "admin",
"hosts": [],
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"L": "BeiJing",
"ST": "BeiJing",
"O": "system:masters",
"OU": "System"
}
]
}
EOF
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes admin-csr.json | cfssljson -bare admin
'//制作出admin的两张证书'
#-----------------------
cat > kube-proxy-csr.json <<EOF '//制作网络代理证书'
{
"CN": "system:kube-proxy",
"hosts": [],
"key": {
"algo": "rsa",
"size&