创建集群

参考:https://blog.csdn.net/lswzw/article/details/103141782

安装Helm 2.x版本

参考:https://blog.csdn.net/lswzw/article/details/104103353

config多集群管理

参考:https://blog.csdn.net/lswzw/article/details/104103422

联邦下载安装

官方Git地址:
https://github.com/kubernetes-sigs/kubefed
须要下载2个压缩包.
下载最新地址:https://github.com/kubernetes-sigs/kubefed/releases
我这时用的 v0.1.0 rc6
helm文件下载地址 : https://github.com/kubernetes-sigs/kubefed/blob/master/charts/index.yaml
里面对应找版本直接下载. 用repo包可能存在网络问题.

文件1: kubefedctl
https://github.com/kubernetes-sigs/kubefed/releases/download/v0.1.0-rc6/kubefedctl-0.1.0-rc6-linux-amd64.tgz

文件2: helm 文件
https://github.com/kubernetes-sigs/kubefed/releases/download/v0.1.0-rc6/kubefed-0.1.0-rc6.tgz

helm文件版本须要和kubefedctl文件版本一样.

部署helm 到主集群.
helm install kubefed-0.1.0-rc6.tgz --name kubefed --namespace kube-federation-system

对应官文:https://github.com/kubernetes-sigs/kubefed/blob/master/charts/kubefed/README.md

查看状态
# kubectl get pod -n kube-federation-system
NAME                                          READY   STATUS    RESTARTS   AGE
kubefed-admission-webhook-7fdcc5b56f-q29s4    1/1     Running   0          83m
kubefed-controller-manager-75bdd8c787-2dc4z   1/1     Running   0          66m
kubefed-controller-manager-75bdd8c787-n4mtx   1/1     Running   0          67m

我这是1个master点和2个node. manager服务会分布在每一个node节点.
(部署时间会比较长,耐心等待都没问题.镜像是可以拉到的.)

添加集群到联邦

  1. 执行kubectl config get-contexts命令,获取集群列表信息。
    看到如下信息时,表示已配置完成。
    这里参考上面config多集群管理
CURRENT   NAME       CLUSTER    AUTHINFO            NAMESPACE
*         cluster1   cluster1   kubernetes-admin1
          cluster2   cluster2   kubernetes-admin2
  1. 如下命令,将cluster1设置为主集群,cluster2设置为从集群,完成联邦集群的组建。
# 设置host集群
kubefedctl join cluster1 --cluster-context cluster1 \
   --host-cluster-context cluster1 --v=2
	
# 加入member集群
kubefedctl join cluster2 --cluster-context cluster2 \
    --host-cluster-context cluster1 --v=2
    
  1. 执行以下命令,查看联邦集群的接入情况。
    看到如下信息,说明联邦集群已经接入成功。
kubectl -n kube-federation-system get kubefedclusters

NAME       READY   AGE
cluster1   True    55m
cluster2   True    54m

对应官文:https://github.com/kubernetes-sigs/kubefed/blob/master/docs/cluster-registration.md

创建联邦应用

  1. 创建并拷贝以下内容到federated-namespace.yaml文件中,并在主集群上cluster1执行kubectl apply -f federated-namespace.yaml命令,创建FederatedNamespace。
apiVersion: v1
kind: Namespace
metadata:
  name: test-namespace
---
apiVersion: types.kubefed.io/v1beta1
kind: FederatedNamespace
metadata:
  name: test-namespace
  namespace: test-namespace
spec:
  placement:
    clusters:
        - name: cluster1
        - name: cluster2
  1. 创建并拷贝以下内容到federated-deployment.yaml文件中,并在主集群上cluster1执行kubectl apply -f federated-deployment.yaml命令,部署FederatedDeployment。
apiVersion: types.kubefed.io/v1beta1
kind: FederatedDeployment
metadata:
  name: test-deployment
  namespace: test-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
            resources:
              limits:
                cpu: 500m
              requests:
                cpu: 200m
  placement:
    clusters:
        - name: cluster1
        - name: cluster2
  1. 执行如下命令,查看联邦集群中各个Deployment详情。
    当看到如下信息时,表示应用部署完成。
kubectl get deployment -n test-namespace --context cluster1
NAME              DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
test-deployment   2         2         2            2           71s
kubectl get deployment -n test-namespace --context cluster2
NAME              DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
test-deployment   2         2         2            2           77s
  1. 修改deploy文件.注释deploy文件 " # - name: cluster1 " 在cluster1上不部署.重新部署deploy文件 kubectl apply -f federated-deployment.yaml
    查看情况如下. 没有在cluster1上部署.只在cluster2上部署 了.
[root@1master ~]# kubectl get deployment -n test-namespace --context cluster1
No resources found.
[root@1master ~]# kubectl get deployment -n test-namespace --context cluster2
NAME              READY   UP-TO-DATE   AVAILABLE   AGE
test-deployment   2/2     2            2           50m

参考:https://help.aliyun.com/document_detail/121649.html?spm=a2c4g.11186623.6.629.162821f6awAyhs

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐