K8s手工创建kubeconfig
Posted catoop
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了K8s手工创建kubeconfig相关的知识,希望对你有一定的参考价值。
我们通过 kubectl
命令行连接 k8s apiserver 时需要依赖 kubeconfig
文件。
kubeconfig
文件通常包含了 context
(上下文)列表,每个 context
又会引用 cluster
和 user
,最后通过 current-context
指定当前 kubeconfig 使用哪个 context。
kubeconfig
文件的默认存放位置为 ~/.kube/config
,文件结构示例如下:
apiVersion: v1
kind: Config
clusters:
- name: "k8s-180"
cluster:
# 忽略证书
insecure-skip-tls-verify: true
server: https://192.168.1.180:6443
#certificate-authority-data: "LS0tLS1CRUdJ......ZJQ0FURS0tLS"
users:
- name: "k8s-admin"
user:
client-certificate-data: "LS0tLS1CRUdJTi......VEUtLS0tLQo="
client-key-data: "LS0tLS1CRUdJTi......qTVAKdWRiQXZmM1JiajRuSmxZ\\
b3V3NEJ5YkppNVFLRj......IUXpSb0pvaTNFMC9oc2x\\
QUxnPT0KLS0tLS1......SVElGSUNBVEUtLS0tLQo="
#token: "kubeconfig-user-rmz6q.c-97hgz:29z89ns8whhgq8......gl57cfvwlv"
contexts:
- name: "k8s-180"
context:
user: "k8s-admin"
cluster: "k8s-180"
current-context: "k8s-180"
1、其中 client-certificate-data
的内容为文件 kube-node.pem
或 node-node1.pem
的内容,获取文件内容的方法可以使用命令 base64 /etc/kubernetes/ssl/kube-node.pem
或 cat /etc/kubernetes/ssl/node-node1.pem | base64 -w 0
,内容可以单行或者使用\\
进行换行。
2、其中 client-key-data
的内容为文件 kube-node-key.pem
或 node-node1-key.pem
的内容,获取文件内容的方法可以使用命令 base64 /etc/kubernetes/ssl/kube-node-key.pem
或 cat /etc/kubernetes/ssl/node-node1-key.pem | base64 -w 0
,内容可以单行或者使用\\
进行换行。
3、另外,如果 user 中使用 token,则可以不配置 client-certificate-data
和 client-key-data
。
4、以上配置文件中的证书通过字符串的方式配置在 config 文件中,如果不想写具体的字符串,本地有证书文件,则可以通过 client-certificate
和 client-key
来设置证书路径的方式使用,如下某集群示例所示:
apiVersion: v1
kind: Config
clusters:
- cluster:
api-version: v1
certificate-authority: /etc/kubernetes/ssl/kube-ca.pem
server: "https://127.0.0.1:6443"
name: "local"
contexts:
- context:
cluster: "local"
user: "kube-controller-manager-local"
name: "local"
current-context: "local"
users:
- name: "kube-controller-manager-local"
user:
client-certificate: /etc/kubernetes/ssl/kube-controller-manager.pem
client-key: /etc/kubernetes/ssl/kube-controller-manager-key.pem
该示例文件为 RKE 创建的 K8s 集群的 config 配置文件
/etc/kubernetes/ssl/kubecfg-kube-controller-manager.yaml
的内容
最后实操 kubectl
命令验证配置:
[root@k8s-node1 ~]# kubectl config current-context
k8s-180
[root@k8s-node1 ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-node1 Ready controlplane,etcd,worker 448d v1.21.5
k8s-node2 Ready controlplane,etcd,worker 448d v1.21.5
k8s-node3 Ready controlplane,etcd,worker 448d v1.21.5
k8s-node4 Ready worker 413d v1.21.5
k8s-node5 Ready worker 413d v1.21.5
k8s-node6 Ready worker 413d v1.21.5
(END)
以上是关于K8s手工创建kubeconfig的主要内容,如果未能解决你的问题,请参考以下文章
下篇:使用jenkins发布go项目到k8s,接上篇的手工体验改造为自动化发布
关于Prometheus在K8S中的部署方案如何选择,以及分享手工部署的YAML