kubernetes 集群联邦 federation搭建

kubernetes集群配置

  • 安装helm
  • 可以通过pvc动态创建pv
  • kubectl 版本要求1.8或1.9

自定义DNS

安装etcd(for dns)

helm install --namespace my-namespace --name etcd-operator stable/etcd-operator
helm upgrade --namespace my-namespace --set cluster.enabled=true etcd-operator stable/etcd-operator

部署coredns

helm fetch stable/coredns

解压后修改values

isClusterService: false
plugins:
kubernetes:
enabled: false
etcd:
enabled: true
zones:
- "example.com."
endpoint: "http://etcd-cluster.my-namespace:2379"

**zones 最后有个 . **

helm install --namespace my-namespace --name coredns -f Values.yaml stable/coredns

初始化主集群

获取kubefed

从github上下载 地址: https://github.com/kubernetes/federation/releases

coredns配置

cat coredns-provider.conf
[Global]
etcd-endpoints = http://etcd-cluster.my-namespace:2379
zones = example.com.

获取集群的连接信息

kubectl config get-contexts
CURRENT   NAME                     CLUSTER          AUTHINFO               NAMESPACE
*         fellowship               fellowship       fellowship
node202.k8s.com          kubernetes       kubernetes-admin
sjx.k8s.com              kubernetes-sjx   kubernetes-admin-sjx

部署federation

kubefed init fellowship \                                         #集群联邦的context name
--host-cluster-context=node202.k8s.com \                      #主集群的context NAME
--dns-provider="coredns" \                                    # DNS 服务提供商,还支持 aws-route53 或 google-clouddns
--dns-zone-name="k8s.inspur.com." \                           #域名后缀,必须以. 结束
--dns-provider-config="/root/coredns-provider.conf" \         #coredns 配置
--apiserver-arg-overrides="--anonymous-auth=false,--v=4" \    # federation API server 自定义参数
--api-server-service-type="NodePort" \                        #在自己的机器上需要用NodePort
--etcd-pv-storage-class='ceph-rbd' \                          #sc
--image='markdotsonrs/fcp-amd64:v1.9.0-alpha.3' \             #使用dockerhub上的镜像
--etcd-image='s7799653/google-etcd'                           #使用dockerhub上的镜像

注册集群

kubefed join new  \                                       #自定义名称
--host-cluster-context=node202.k8s.com \              #集群联邦所在集群的context
--cluster-context=node202.k8s.com                     #要加入集群的context

验证

kubectl config use-context fellowship
kubectl get cluster
kubectl create ns default
kubectl run nginx --image nginx --port 80 --replicas=4
kubectl get deploy
kubectl --context=node202.k8s.com get po -n default
kubectl --context=sjx.k8s.com get po -n default

参考

https://my.oschina.net/u/2306127/blog/1835623
https://kubernetes.io/docs/tasks/federation/set-up-cluster-federation-kubefed/
https://feisky.gitbooks.io/kubernetes/content/components/federation.html

Author: jxin

发表评论

电子邮件地址不会被公开。 必填项已用*标注