4. 二进制配置 Kubectl 命令行工具
部署 kubectl 命令行工具
kubectl 默认从 ~/.kube/config 配置文件获取访问 kube-apiserver 地址、证书、用户名等信息
#一键安装kubectl 需保证yum源中存在资源
$ yum install kubectl
创建 admin 证书
kubectl 与 kube-apiserver 的安全端口通信,需要为安全通信提供 TLS 证书和秘钥。
创建 admin 证书签名请求
$ cd /root/cfssldir
$ cat admin-csr.json
{
"CN": "admin",
"hosts": [],
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"ST": "BeiJing",
"L": "BeiJing",
"O": "system:masters",
"OU": "System"
}
]
}
- 后续
kube-apiserver使用RBAC对客户端(如kubelet、kube-proxy、Pod)请求进行授权; kube-apiserver预定义了一些RBAC使用的RoleBindings,如cluster-admin将 Groupsystem:masters与 Rolecluster-admin绑定,该 Role 授予了调用kube-apiserver所有 API的权限;- O 指定该证书的 Group 为
system:masters,kubelet使用该证书访问kube-apiserver时 ,由于证书被 CA 签名,所以认证通过,同时由于证书用户组为经过预授权的system:masters,所以被授予访问所有 API 的权限; - hosts 属性值为空列表;
生成 admin 证书和私钥,创建kubectl文件夹,用于存放相关文件
$ cfssl gencert -ca=/root/cfssldir/ca.pem \
-ca-key=/root/cfssldir/ca-key.pem \
-config=/root/cfssldir/ca-config.json \
-profile=kubernetes admin-csr.json | cfssljson -bare admin
$ ls admin*
admin.csr admin-csr.json admin-key.pem admin.pem
$ mkdir -p /root/kubectl
$ sudo cp admin*.pem ca.pem /root/kubectl
创建 kubectl kubeconfig 文件
$ cd /root/kubectl
$ vim createkubectlcfg.sh
# 设置集群参数
kubectl config set-cluster kubernetes \
--certificate-authority=/root/kubectl/ca.pem \
--embed-certs=true \
--server=https://100.69.218.95:6443
--kubeconfig=kubectl.kubeconfig
# 设置客户端认证参数
kubectl config set-credentials admin \
--client-certificate=/root/kubectl/admin.pem \
--embed-certs=true \
--client-key=/root/kubectl/admin-key.pem
--kubeconfig=kubectl.kubeconfig
# 设置上下文参数
kubectl config set-context kubernetes \
--cluster=kubernetes \
--user=admin
--kubeconfig=kubectl.kubeconfig
# 设置默认上下文
kubectl config use-context kubernetes --kubeconfig=kubectl.kubeconfig
--certificate-authority:验证 kube-apiserver 证书的根证书;--client-certificate、--client-key:刚生成的 admin 证书和私钥,连接 kube-apiserver 时使用;--embed-certs=true:将 ca.pem 和 admin.pem 证书内容嵌入到生成的 kubectl.kubeconfig 文件中(不加时,写入的是证书文件路径);
生成kubectl.kubeconfig 文件并替换原始配置
$ chmod +x createkubectlcfg.sh
$ bash createkubectlcfg.sh
$ cp kubectl.kubeconfig ~/.kube/config
组件验证
执行如下命令,有正常返回值则配置成功:
kubectl get cs

浙公网安备 33010602011771号