联邦集群安装

准备工作

总结

  1. 联邦必须依托一套主的K8S集群,无法将联邦的控制平面独立出来
  2. 联邦参加实质上可以理解为数据库的主从同步,在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详情

你可能感兴趣的:(联邦集群安装)