kubectl连接群集,k8s中只可以通过接口创建 serviceaccount ,普通账号是不能通过接口创建的,k8s 通过kubectl 连接远程群集时候,如果通过证书的方式,那么生成证书的CN代表用户,O代表组。k8s中的RBAC机制中,通过,首先通过 CN和O 进行认证,两则存在其一即可(当然两则都不存在也是可以的,只是后面’授权‘的 时候,没有任何权限可以使用,认证之后开始查看CN和O中绑定的角色,根据其中配置的权限,确定kubectl 能看到的“东西”。
openssl genrsa -out tianyh.key 2048
openssl req -new -key tianyh.key -out tianyh.csr -subj "/C=CN/ST=GuangDong/L=ShenZhen/O=system:masters/OU=meitianhui/CN=tianyh"
openssl x509 -req -days 3650 -in tianyh.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out tianyh.pem
查看证书信息,-noout 结果中不显示证书的信息,没有这个,在结果会把证书整个显示出来,-text 文本方式打印
openssl x509 -noout -in shitian.pem -text
查看证书请求信息,和上面一样,只是把x509换成了req
openssl req -in shitian.csr -noout -text
kubectl config set-cluster kubernetes1 --server=https://192.168.1.166:6443 --certificate-authority=ca.pem --embed-certs=true --kubeconfig=config
其中--embed-certs=true 不显示证书的路径,而是使用base64编码后的字符串来使用证书。用途就是,你可以把实际证书文件删除。kubernetes1 是kubeconfig的名称,第六步会用到
kubectl config set-credentials tianyh --certificate-authority=ca.pem --client-key=tianyh.key --client-certificate=tianyh.pem --embed-certs=true --kubeconfig=config
kubectl config set-context k8s3 --cluster=kubernetes1 --user=tianyh --kubeconfig=config
--cluster 名称为第四步set-cluster 设置的名称, --user 为第五步 set-credentials 设置的名称, k8s3 为下一步切换上下需要切换的名称。
kubectl config use-context k8s3 --kubeconfig=config
其中k8s3 为上下文(context) 的名称,此名称为第六步设置的上下文的时候设置
分别生成各个k8s config 文件,比如 config1 ,config2 然后copy 一个集中控制台
执行:
KUBECONFIG=config1:config2 kubectl config view --flatten >config 合并一个config文件
把合并后的config 文件放到~/.kube 下即可
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!