kubernetes 多集群管理

本贴最后更新于 1757 天前,其中的信息可能已经事过景迁

配置文件结构解析

查看 kubernetes 配置文件内容:

cat ~/.kube/config apiVersion: v1 clusters: - cluster: certificate-authority-data: ······ server: https://192.168.31.61:6443 name: kubernetes contexts: - context: cluster: kubernetes user: kubernetes-admin name: kubernetes-admin@kubernetes current-context: kubernetes-admin@kubernetes kind: Config preferences: {} users: - name: kubernetes-admin user: client-certificate-data: ······ client-key-data: ······

参数解释:

  • certificate-authority-data:集群 ca 证书
  • server:集群的链接地址
  • client-certificate-data:集群客户端数字证书
  • client-key-data:集群客户端证书 key

image.png

上下文区:cluster 后面跟的是关联的集群的名称,与集群区中 name 后面的内容相对应,集群区中,可以包含其他集群信息。

客户端认证区:用户认证信息,通过 name 后面的用户名关联,与上下文区中 user 后面的内容相对应。

当前上下文区:指定当前使用的哪个上下文

注意:一个配置文件中可以包含多个集群信息

准备工作:

  • 1.下载 cfssl 证书生成工具:
curl -L https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 -o /usr/local/bin/cfssl curl -L https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 -o /usr/local/bin/cfssljson curl -L https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64 -o /usr/local/bin/cfssl-certinfo cp -rf cfssl cfssl-certinfo cfssljson /usr/local/bin chmod +x /usr/local/bin/cfssl*

或者直接在本站点下载:点击下载

解压并复制到指定目录下:

wget https://leif.fun/downloads/kubernetes/cfssl.tar.gz tar -zxvf cfssl.tar.gz cp -rf cfssl cfssl-certinfo cfssljson /usr/local/bin chmod +x /usr/local/bin/cfssl*
  • 2.生成客户端管理员(超级)证书(即下文出现的 admin-key.pemadmin.pem

生成 ca-config.json 配置文件(辅助 ca 来生成客户端证书):

cat > ca-config.json <<EOF { "signing": { "default": { "expiry": "87600h" }, "profiles": { "kubernetes": { "expiry": "87600h", "usages": [ "signing", "key encipherment", "server auth", "client auth" ] } } } } EOF
  • 3.生成 admin-csr.json 配置文件(客户端证书请求文件):
cat > admin-csr.json <<EOF { "CN": "admin", "hosts": [], "key": { "algo": "rsa", "size": 2048 }, "names": [ { "C": "CN", "L": "BeiJing", "ST": "BeiJing", "O": "system:masters", "OU": "System" } ] }
  • 4.生成证书:
cfssl gencert -ca=ca.crt -ca-key=ca.key -config=ca-config.json -profile=kubernetes admin-csr.json | cfssljson -bare admin

操作步骤

多集群环境:
test 环境: 192.168.31.61
dev 环境: 192.168.31.73

ssh 到 dev 环境中

1.设置集群参数

# 设置集群参数 kubectl config set-cluster kubernetes \ --server=https://192.168.31.61:6443 \ --certificate-authority=/etc/kubernetes/pki/ca.crt \ --embed-certs=true \ --kubeconfig=config

参数解释:

  • --certificate-authority:指定 ca 证书地址
  • --embed-certs:是否将 ca 证书写入配置文件中
  • -kubeconfig:生成的配置文件名

2.设置上下文参数

# 设置上下文参数 kubectl config set-context test \ --cluster=kubernetes \ --user=cluster-admin \ --kubeconfig=config

3.设置默认上下文

# 设置默认上下文 kubectl config use-context test --kubeconfig=config

4.设置客户端认证参数

# 设置客户端认证参数 kubectl config set-credentials cluster-admin \ --certificate-authority=/etc/kubernetes/pki/ca.crt \ --embed-certs=true \ --client-key=/etc/kubernetes/pki/admin-key.pem \ --client-certificate=/etc/kubernetes/pki/admin.pem \ --kubeconfig=config

此时当前集群的 config 配置文件已经包含两个集群信息了,分别是 test 和 dev,且默认使用 test 集群

5.设置当前集群环境为 dev 并指定配置文件

kubectl config set-context dev --kubeconfig=config

6.切换集群环境:

kubectl config use-context test

总结

  • 1、使用 kubectl config 命令生成多集群配置文件框架,指定好对应集群 ca.crt
  • 2、将各自集群/etc/kubernetes/admin.conf 客户端证书复制拷贝到自己生成 kubeconfig 客户端证书位置

注意:/etc/kubernetes/admin.conf~/.kube/config 为同一文件

  • Kubernetes

    Kubernetes 是 Google 开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。

    116 引用 • 54 回帖 • 2 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...