码迷,mamicode.com
首页 > 其他好文 > 详细

部署k8s ssl集群实践3:部署kubectl命令工具行

时间:2018-08-27 12:47:33      阅读:379      评论:0      收藏:0      [点我收藏+]

标签:row   保存   ica   hub   ril   admin   contex   base   认证   

参考文档:
https://github.com/opsnull/follow-me-install-kubernetes-cluster
感谢作者的无私分享。
集群环境已搭建成功跑起来。
文章是部署过程中遇到的错误和详细操作步骤记录。如有需要对比参考,请按照顺序阅读和测试。

3.1
下载和分发 kubectl 二进制文件

[root@k8s-master kubernetes]# wget https://dl.k8s.io/v1.10.4/kubernetes-client-linux-amd64.tar.gz
--2018-08-20 14:24:47--? https://dl.k8s.io/v1.10.4/kubernetes-client-linux-amd64.tar.gz
正在解析主机 dl.k8s.io (dl.k8s.io)... 23.236.58.218
正在连接 dl.k8s.io (dl.k8s.io)|23.236.58.218|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 302 Moved Temporarily
位置:https://storage.googleapis.com/kubernetes-release/release/v1.10.4/kubernetes-client-linux-amd64.tar.gz [跟随至新的 URL]
--2018-08-20 14:24:48--? https://storage.googleapis.com/kubernetes-release/release/v1.10.4/kubernetes-client-linux-amd64.tar.gz
正在解析主机 storage.googleapis.com (storage.googleapis.com)... 216.58.221.144, 2404:6800:4005:808::2010
正在连接 storage.googleapis.com (storage.googleapis.com)|216.58.221.144|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:13353257 (13M) [application/x-tar]
正在保存至: “kubernetes-client-linux-amd64.tar.gz”

100%[==============================================================================>] 13,353,257? 10.3MB/s 用时 1.2s??

2018-08-20 14:24:50 (10.3 MB/s) - 已保存 “kubernetes-client-linux-amd64.tar.gz” [13353257/13353257])
[root@k8s-master kubernetes]# tar -zxvf kubernetes-client-linux-amd64.tar.gz
kubernetes/
kubernetes/client/
kubernetes/client/bin/
kubernetes/client/bin/kubectl
[root@k8s-master kubernetes]#

分发到所有节点的/opt/k8s/bin ?确保有执行权限

[root@k8s-master kubernetes]# cp kubernetes/client/bin/kubectl /opt/k8s/bin/
[root@k8s-master kubernetes]# chmod +x /opt/k8s/bin
[root@k8s-master kubernetes]# scp kubernetes/client/bin/kubectl root@k8s-node1:/opt/k8s/bin/
kubectl? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? 100%?? 52MB? 82.9MB/s?? 00:00? ?
[root@k8s-master kubernetes]# scp kubernetes/client/bin/kubectl root@k8s-node2:/opt/k8s/bin/
kubectl? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? 100%?? 52MB? 91.6MB/s?? 00:00? ?
[root@k8s-master kubernetes]#

3.2
创建admin证书和私钥

kubectl 与 apiserver https 安全端口通信,apiserver 对提供的证书进行认证和授权。
kubectl 作为集群的管理工具,需要被授予最高权限。这里创建具有最高权限的 admin
证书。

创建证书签名请求

[root@k8s-master admin]# cat admin-csr.json
{
"CN": "admin",
"hosts": [],
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"ST": "SZ",
"L": "SZ",
"O": "system:masters",
"OU": "4Paradigm"
}
]
}
[root@k8s-master admin]#

O 为 system:masters ,kube-apiserver 收到该证书后将请求的 Group 设置为
system:masters;
预定义的 ClusterRoleBinding cluster-admin 将 Group system:masters 与
Role cluster-admin 绑定,该 Role 授予所有 API的权限;
该证书只会被 kubectl 当做 client 证书使用,所以 hosts 字段为空;

生成证书和私钥:

/root/k8s/kubernetes/kubernetes/key/admin
[root@k8s-master admin]# cfssl gencert -ca=/etc/kubernetes/cert/ca.pem -ca-key=/etc/kubernetes/cert/ca-key.pem -config=/etc/kubernetes/cert/ca-config.json -profile=kubernetes admin-csr.json | cfssljson -bare admin
2018/08/20 14:45:10 [INFO] generate received request
2018/08/20 14:45:10 [INFO] received CSR
2018/08/20 14:45:10 [INFO] generating key: rsa-2048
2018/08/20 14:45:10 [INFO] encoded CSR
2018/08/20 14:45:10 [INFO] signed certificate with serial number 428475884414304130599120601246945000507451954346
2018/08/20 14:45:10 [WARNING] This certificate lacks a "hosts" field. This makes it unsuitable for
websites. For more information see the Baseline Requirements for the Issuance and Management
of Publicly-Trusted Certificates, v.1.1.6, from the CA/Browser Forum (https://cabforum.org);
specifically, section 10.2.3 ("Information Requirements").
[root@k8s-master admin]# ls
admin.csr? admin-csr.json? admin-key.pem? admin.pem

创建 kubeconfig 文件
kubeconfig 为 kubectl 的配置文件,包含访问 apiserver 的所有信息,如 apiserver 地
址、CA 证书和自身使用的证书;

[root@k8s-master admin]# source /opt/k8s/bin/environment.sh
# 设置集群参数
[root@k8s-master admin]# kubectl config set-cluster kubernetes --certificate-authority=/etc/kubernetes/cert/ca.pem --embed-certs=true --server=${KUBE_APISERVER} --kubeconfig=kubectl.kubeconfig
#设置客户端认证参数
[root@k8s-master admin]# kubectl config set-credentials admin --client-certificate=admin.pem --client-key=admin-key.pem --embed-certs=true --kubeconfig=kubectl.kubeconfig
#设置上下文参数
[root@k8s-master admin]# kubectl config set-context kubernetes --cluster=kubernetes --user=admin --kubeconfig=kubectl.kubeconfig
#设置默认上下文
[root@k8s-master admin]# kubectl config use-context kubernetes --kubeconfig=kubectl.kubeconfig
Switched to context "kubernetes".
[root@k8s-master admin]#

--certificate-authority :验证 kube-apiserver 证书的根证书;
--client-certificate 、 --client-key :刚生成的 admin 证书和私钥,连
接 kube-apiserver 时使用;
--embed-certs=true :将 ca.pem 和 admin.pem 证书内容嵌入到生成的
kubectl.kubeconfig 文件中(不加时,写入的是证书文件路径);

分发kubeconfig文件
保存到用户的 ~/.kube/config 文件

[root@k8s-master admin]# ls
admin.csr? admin-csr.json? admin-key.pem? admin.pem? kubectl.kubeconfig
[root@k8s-master admin]# cp kubectl.kubeconfig ~/.kube
[root@k8s-master admin]# cd
[root@k8s-master ~]# ls -a
.?? anaconda-ks.cfg? .bash_logout?? .bashrc? .config? environment.sh? .kube? .ssh
..? .bash_history? ? .bash_profile? .cache?? .cshrc?? k8s? ? ? ? ? ?? .pki?? .tcshrc
[root@k8s-master ~]# cd .kube/
[root@k8s-master .kube]# ls
kubectl.kubeconfig

注意名字改好

[root@k8s-master ~]# cd .kube/
[root@k8s-master .kube]# ls
kubectl.kubeconfig
[root@k8s-master .kube]# mv kubectl.kubeconfig config
[root@k8s-master .kube]# ll
总用量 8
-rw------- 1 root root 6212 8月? 20 15:08 config

[root@k8s-master ~]#? scp .kube/config root@k8s-node2:/root/.kube/
config? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 100% 6212? ?? 6.6MB/s?? 00:00? ?
[root@k8s-master ~]#? scp .kube/config root@k8s-node1:/root/.kube/
config ? ? ? ? ?

3.3
注意:
kubectl 默认从 ~/.kube/config 文件读取 kube-apiserver 地址、证书、用户名等信息。.kube/config这个名字必须是这个。
如果名字不对或者路径不对,可能报错

$ kubectl get pods
The connection to the server localhost:8080 was refused - did you specify the right host or port?

部署k8s ssl集群实践3:部署kubectl命令工具行

标签:row   保存   ica   hub   ril   admin   contex   base   认证   

原文地址:http://blog.51cto.com/goome/2164770

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!