管理多个k8s集群的技巧

#####################################################

#把每个k8s集群的json配置文件放到/root/.kube/目录下,改为不同名字,通过–kubeconfig实现不同集群操作

kubectl --kubeconfig=/root/.kube/myconfig get pods

#####################################################

kubecm

https://github.com/sunny0826/kubecm

export VERSION=0.15.3

curl -Lo kubecm.tar.gz https://github.com/sunny0826/kubecm/releases/download/v${VERSION}/kubecm_${VERSION}_Linux_x86_64.tar.gz

#https://github.com/sunny0826/kubecm/releases/download/v0.15.3/kubecm_0.15.3_Linux_x86_64.tar.gz

tar -zxvf kubecm.tar.gz kubecm

cd kubecm

mv kubecm /usr/local/bin/

# 集群切换命令

$ kubecm switch

#####################################################

使用 kubectl 管理多个 k8s 集群

第一性原则看问题

kubectl 本质上是一个与 kube-apiserver 做 7 层通信的客户端工具,因为 kube-apiserver会做鉴权,所以 kubectl 使用过程中需要 kubeconfig 文件来保存一些配置信息,这些信息包括:

  1. 用来验证 kube-apiserver 的 CA 根证书
  2. 用来标识 kubectl 管理员的证书 & 私钥,或者用来标识普通用户的token

kubeconfig 是一个 YAML 格式的配置文件,其主要字段如下:

  • clusters 类型为数组,每个元素代表一个 k8s cluster
  • users 类型为数组,每个元素代表拥有访问权限的用户
  • contexts 类型为数组,每个元素表示要使用的 cluster & user组合
  • current-context 当前正在使用的上下文

kubectl 做多集群的管理,本质上就是把集群的相关参数,以及用户的相关信息全都记录下来,然后通过 context 将其组合,通过 current-context 参数来标明当前正在使用的 context。

多集群管理实操

1. 创建 kubeconfig 文件脚手架

kubeconfig 是一个 YAML 格式的配合文件,假定我们现在的需求是:管理开发集群 dev 和测试集群 test。这时我们先定义两个集群 test & dev,此外 test 集群管理员我们命名为 test-admin,dev 集群的管理员命名为 dev-admin。

最后我们通过 test context 来表示测试集群上下文,用dev context 来表示开发集群上下文。

apiVersion: v1
kind: Config
preferences: {}

clusters:
- cluster:
  name: test
- cluster:
  name: dev

users:
- name: test-admin
- name: dev-admin

contexts:
- context:
  name: test
- context:
  name: dev

2. 向 kubeconfig 中填写参数

该步骤的任务是向 kubeconfig 文件中填写配置信息,主要包含 cluster 、user、context。不需要手动填写,kubectl config 会将我们传入的参数填入到配置文件中去。默认的,kubectl 会操作 $HOME/.kube/config 文件(没有 KUBECONFIG 环境变量做特殊声明的话),我们可以使用 --kubeconfig 参数来指明要操作的 kubeconfig 文件。

对 cluster 做配置

分别对 dev & test 集群配置,填写内容包括 kube-apiserver 的地址端口和集群的根证书路径。--embed-certs=true 参数可以把证书内容内嵌到配置文件中。

kubectl config --kubeconfig=kubeconfig set-cluster ${Cluster_Name} \
--server=${API_Server_Addr} 
--certificate-authority=${CA_PATH}
--embed-certs=true

对 user 做配置

分别对 test-admin & user-admin 做参数配置,填写的内容包括标识 admin 身份的证书和私钥。

kubectl config --kubeconfig=kubeconfig set-credentials ${User_Name} \
--client-certificate=${Client_Cert} \
--client-key=${Client_Private_Key} \
--embed-certs=true

对 context 做配置

context 本质上是 cluster、user、namespace 的组合,其中 namespace 选填,默认为 default。

# 配置 test 集群
kubectl config --kubeconfig=kubeconfig set-context test \
--cluster=test \
--user=test-admin

# 配置 dev 集群
kubectl config --kubeconfig=kubeconfig set-context dev \
--cluster=dev \
--user=dev-admin

选定要使用的集群

切换集群的本质就是改变 current-context 的值,通过 current-context 来标识当前 kubectl访问的是哪个集群。

kubectl config use-context ${Context_Name}

核查配置结果

本文要达到的最终目的就是通过 kubectl config use-context 快速的在多个集群之间切换,效果如下:

➜  kubectl get node
NAME                             STATUS                     ROLES    AGE   VERSION
master1.safehouse.mydomain.com   Ready,SchedulingDisabled   master   87d   v1.15.5
worker1.safehouse.mydomain.com   Ready                      node     87d   v1.15.5
worker2.safehouse.mydomain.com   Ready                      node     87d   v1.15.5
➜  kubectl config use-context dev
Switched to context "dev".
➜  kubectl get node
NAME                 STATUS                     ROLES    AGE   VERSION
master1.dev.sf.com   Ready,SchedulingDisabled   master   82d   v1.15.5
worker1.dev.sf.com   Ready                      node     82d   v1.15.5
worker2.dev.sf.com   Ready                      node     82d   v1.15.5

#####################################################

Rancher

可以学习一下rancher, 应该也可以管理多个集群。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
A: 1. 确保你的环境满足k8s的最低要求。通常来说,你需要至少3台虚拟机节点运行k8s集群,其中一台为Master节点,另外两台为Worker节点。每台节点至少需要2GB RAM和2核CPU。 2. 安装Docker和kubeadm工具。可以通过官网提供的脚本自动化地安装这两个工具。 3. 在Master节点上初始化一个k8s集群,并将Worker节点加入集群。具体步骤如下: - 在Master节点上运行以下命令初始化集群:sudo kubeadm init --pod-network-cidr=10.244.0.0/16 此命令将在Master节点上安装一些必要的k8s组件并生成一个join token。这个token将用于加入其他Worker节点。 - 将Worker节点加入集群:在每个Worker节点上运行Master节点上生成的join token。如下所示: sudo kubeadm join [Master节点的IP地址]:6443 --token [生成的token] --discovery-token-ca-cert-hash sha256:[hash值] - 配置k8s网络插件:为了让集群内的Pod能够相互通信,需要安装一个k8s网络插件。以下是安装flannel插件的示例步骤: kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml 4. 验证集群已经成功建立。使用以下命令检查集群状态以及运行一些简单的测试: - kubectl get nodes : 检查所有节点状态 - kubectl apply -f https://k8s.io/examples/application/wordpress/mysql-deployment.yaml : 部署MySQL实例 - kubectl apply -f https://k8s.io/examples/application/wordpress/wordpress-deployment.yaml : 部署Wordpress实例 5. 添加更多Worker节点(可选)。通过在新节点上运行上述join命令加入集群即可。 注意:以上步骤仅供示例,请根据你的实际需求以及集群规模进行进一步配置和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

网络飞鸥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值