声明:
如果您有更好的技术与作者分享,或者商业合作;
请访问作者个人网站 http://www.esqabc.com/view/message.html 留言给作者。
如果该案例触犯您的专利,请在这里:http://www.esqabc.com/view/message.html 留言给作者说明原由
作者一经查实,马上删除
前提提条件、服务器,请查看这个地址:https://blog.csdn.net/esqabc/article/details/102726771
a、创建证书文件夹
[root@k8s-01 ~]# mkdir -p /opt/k8s/cert && cd /opt/k8s
b、下载证书工具
[root@k8s-01 k8s]# wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64
[root@k8s-01 k8s]# mv cfssl_linux-amd64 /opt/k8s/bin/cfssl
[root@k8s-01 k8s]# wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
[root@k8s-01 k8s]# mv cfssljson_linux-amd64 /opt/k8s/bin/cfssljson
[root@k8s-01 k8s]# wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64
[root@k8s-01 k8s]# mv cfssl-certinfo_linux-amd64 /opt/k8s/bin/cfssl-certinfo
c、工具生效
[root@k8s-01 k8s]# chmod +x /opt/k8s/bin/*
[root@k8s-01 k8s]# export PATH=/opt/k8s/bin:$PATH
a、创建配置文件
[root@k8s-01 ~]# cd /opt/k8s/work
[root@k8s-01 work]# cat > ca-config.json <添加下面内容
{
"signing": {
"default": {
"expiry": "87600h"
},
"profiles": {
"kubernetes": {
"usages": [
"signing",
"key encipherment",
"server auth",
"client auth"
],
"expiry": "87600h"
}
}
}
}
EOF
说明一下:
b、创建证书签名请求文件
[root@k8s-01 ~]# cd /opt/k8s/work
[root@k8s-01 work]# cat > ca-csr.json <添加下面内容
{
"CN": "kubernetes",
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"ST": "BeiJing",
"L": "BeiJing",
"O": "k8s",
"OU": "4Paradigm"
}
],
"ca": {
"expiry": "876000h"
}
}
EOF
说明一下:
c、生成CA证书和私钥
[root@k8s-01 ~]# cd /opt/k8s/work
[root@k8s-01 work]# cfssl gencert -initca ca-csr.json | cfssljson -bare ca
[root@k8s-01 work]# ls ca*
d、分发证书
[root@k8s-01 ~]# cd /opt/k8s/work
[root@k8s-01 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
a、上传下载好的kubectl到:cd /opt/k8s/work,解压
[root@k8s-01 work]# tar -xzvf kubernetes-client-linux-amd64.tar.gz
b、分发所有使用kubectl节点
[root@k8s-01 ~]# cd /opt/k8s/work
[root@k8s-01 work]# source /opt/k8s/bin/environment.sh
for node_ip in ${NODE_IPS[@]}
do
echo ">>> ${node_ip}"
scp kubernetes/client/bin/kubectl root@${node_ip}:/opt/k8s/bin/
ssh root@${node_ip} "chmod +x /opt/k8s/bin/*"
done
a、创建admin证书和私钥
[root@k8s-01 ~]# cd /opt/k8s/work
[root@k8s-01 work]# cat > admin-csr.json <添加下面内容
{
"CN": "admin",
"hosts": [],
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"ST": "BeiJing",
"L": "BeiJing",
"O": "system:masters",
"OU": "4Paradigm"
}
]
}
EOF
说明一下:
b、生成证书和私钥
[root@k8s-01 ~]# cd /opt/k8s/work
cfssl gencert -ca=/opt/k8s/work/ca.pem \
-ca-key=/opt/k8s/work/ca-key.pem \
-config=/opt/k8s/work/ca-config.json \
-profile=kubernetes admin-csr.json | cfssljson -bare admin
c、创建kubeconfig文件
[root@k8s-01 ~]# cd /opt/k8s/work
[root@k8s-01 work]# source /opt/k8s/bin/environment.sh
设置集群参数
kubectl config set-cluster kubernetes \
--certificate-authority=/opt/k8s/work/ca.pem \
--embed-certs=true \
--server=${KUBE_APISERVER} \
--kubeconfig=kubectl.kubeconfig
设置客户端认证参数
kubectl config set-credentials admin \
--client-certificate=/opt/k8s/work/admin.pem \
--client-key=/opt/k8s/work/admin-key.pem \
--embed-certs=true \
--kubeconfig=kubectl.kubeconfig
设置上下文参数
kubectl config set-context kubernetes \
--cluster=kubernetes \
--user=admin \
--kubeconfig=kubectl.kubeconfig
设置默认上下文
kubectl config use-context kubernetes --kubeconfig=kubectl.kubeconfig
说明一下:
d、分发kubeconfig文件
[root@k8s-01 ~]# cd /opt/k8s/work
[root@k8s-01 work]# source /opt/k8s/bin/environment.sh
for node_ip in ${NODE_IPS[@]}
do
echo ">>> ${node_ip}"
ssh root@${node_ip} "mkdir -p ~/.kube"
scp kubectl.kubeconfig root@${node_ip}:~/.kube/config
done
也可以参考这篇文章:https://i4t.com/4253.html