准备工作
总结:
- 联邦必须依托一套主的K8S集群,无法将联邦的控制平面独立出来
- 联邦参加实质上可以理解为数据库的主从同步,在V2版本中支持同步的类型有(ConfigMap,Deployment,Ingress,Jobs,Namespace,Secret,ServiceAccount,Service,CRD
准备两套k8s集群
1、安装helm v3,使其安装kubefed
wget https://get.helm.sh/helm-v3.6.0-linux-amd64.tar.gz
tar -xvf helm-v3.6.0-linux-amd64.tar.gz
mv helm /usr/local/bin/
2.能翻的话直接用下面命令安装,一般是不行,用第二种方法
helm repo add kubefed-charts https://raw.githubusercontent.com/kubernetes-sigs/kubefed/master/charts
helm repo list
helm repo update
helm --namespace kube-federation-system upgrade -i kubefed kubefed-charts/kubefed --create-namespace
直接github下载源码,如果还是慢的话,可以直接在网页版下载
wget https://github.com/kubernetes-sigs/kubefed/releases/download/v0.9.2/kubefedctl-0.9.2-linux-amd64.tgz
wget https://github.com/kubernetes-sigs/kubefed/archive/refs/tags/v0.9.2.zip
3.安装kubefedctl 以及kubefed
mv kubefedctl /usr/local/bin/
cd /root/kubefed-0.9.2/charts
helm package kubefed/
helm install kubefed kubefed-0.0.5.tgz --namespace kube-federation-system --create-namespace
kubectl get po -n kube-federation-system
等待启动完成
此时联邦主控件已经安装完成。
4. 配置多集群管理
我们在主集群配置kubectl 能连接两套集群,可以将从集群的config文件拷贝进主机群的config中
配置成功的效果
5.集群管理
5.1 集群注册
设置host集群
kubefedctl join k8s1-admin --host-cluster-context=k8s1-admin --v=2
加入member集群
kubefedctl join k8s2-admin --host-cluster-context=k8s1-admin --v=2
查看联邦集群的成员情况,成功
5.2 注销集群
kubefedctl unjoin k8s2-admin --host-cluster-context=k8s1-admin --v=2
[root@master ~]# kubectl -n kube-federation-system get kubefedclusters.core.kubefed.io
NAME AGE READY KUBERNETES-VERSION
k8s1-admin 82m True v1.17.0
6.联邦命名空间管理
6.1. 创建联邦命名空间 以及deployment
注意: 此处k8s的namespace必须与Fedns匹配一致才能成功。
[root@master TestFederated]# more ns.yml
apiVersion: v1
kind: Namespace
metadata:
name: fd1-namespace
---
apiVersion: types.kubefed.io/v1beta1
kind: FederatedNamespace
metadata:
name: fd1-namespace
namespace: fd1-namespace
spec:
placement:
clusters:
- name: k8s1-admin
- name: k8s2-admin
此时1集群和2集群都创建fd1的命名空间
创建fdDeployment资源
apiVersion: types.kubefed.io/v1beta1
kind: FederatedDeployment
metadata:
name: fd1-deployment
namespace: fd1-namespace
spec:
template:
metadata:
labels:
app: nginx
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- image: nginx
name: nginx
placement:
clusters:
- name: k8s1-admin
- name: k8s2-admin
此时查看联邦集群中各个集群fd1-namespace 下Deployment详情