jsp做网站多吗,辽宁省建设工程质量监督总站网站,提升学历最快是哪种方式,怎么进入公司网站摘要#xff1a; kubernetes集群让您能够方便的部署管理运维容器化的应用。但是实际情况中经常遇到的一些问题#xff0c;就是单个集群通常无法跨单个云厂商的多个Region#xff0c;更不用说支持跨跨域不同的云厂商。这样会给企业带来一些担忧#xff0c;如何应对可用区级别… 摘要 kubernetes集群让您能够方便的部署管理运维容器化的应用。但是实际情况中经常遇到的一些问题就是单个集群通常无法跨单个云厂商的多个Region更不用说支持跨跨域不同的云厂商。这样会给企业带来一些担忧如何应对可用区级别的Fail以及容灾备份是否会造成厂商锁定增加迁移成本如何应对线上线下突发流量如何统一管理调度容器资源单个集群规模的上限等等。 点此查看原文http://click.aliyun.com/m/43608/ kubernetes集群让您能够方便的部署管理运维容器化的应用。但是实际情况中经常遇到的一些问题就是单个集群通常无法跨单个云厂商的多个Region更不用说支持跨跨域不同的云厂商。这样会给企业带来一些担忧如何应对可用区级别的Fail以及容灾备份是否会造成厂商锁定增加迁移成本如何应对线上线下突发流量如何统一管理调度容器资源单个集群规模的上限等等。 Federation集群联邦可以一定程度上解决这些问题。Federation是可以将分布在多个Region或者多个云厂商的Kubernetes集群整合成一个大的集群统一管理与调度。 本文档演示搭建一个杭州和北京的kubernetes集群组成集群联邦其中杭州集群作为联邦的控制平面 准备域名 Federation使用域名将不同子集群的同一个服务暴露出来因此需要用户提供一个可配置的域名。您可以通过万网在阿里云上购买域名然后配置到您的Federation集群上。以域名spacexnice.xyz为例请按照购买域名文档购买好域名。 配置域名 由于Federation在添加域名解析记录的时候设置域名的TTL为3分钟域名层级为5级因此需要到阿里云上对您刚购买的域名进行设置使得该域名允许的最小TTL值小于3分钟同时域名层级大于5. 进入云解析控制台选择您刚刚购买的域名更多里面选[升级]或者[升级VIP] 在弹出的页面中更改最低TTL值为60s,子域名级别为7级然后保存。 创建多个子集群 本示例创建的Federation集群包含两个子集群分别在杭州和北京region。我们首先需要在这两个Region创建出两个可用的集群集群创建步骤参考文档 杭州集群 [rootiZbp1bpj58bdzdosdxxf82Z ~]# kubectl get no
NAME STATUS ROLES AGE VERSION
cn-hangzhou.i-bp11ajet2v9o3tp0o2uw Ready master 3d v1.8.4
cn-hangzhou.i-bp15pt2475mgw64k72ma Ready master 3d v1.8.4
cn-hangzhou.i-bp18fggko6p3vyr0p0ew Ready none 3d v1.8.4
cn-hangzhou.i-bp18fggko6p3vyr0p0ex Ready none 3d v1.8.4
cn-hangzhou.i-bp1bpj58bdzdosdxxf82 Ready master 3d v1.8.4 北京集群 [rootiZze7z98ssc50pfzt6be9 ~]# kubectl get no
NAME STATUS ROLES AGE VERSION
cn-beijing.i-2ze7z98ssc50pfzt6be9 Ready master 3d v1.8.4
cn-beijing.i-2ze8hr6k03ccroopicd2 Ready master 3d v1.8.4
cn-beijing.i-2zeipodwz2junslmihqz Ready master 3d v1.8.4
cn-beijing.i-2zeipodwz2junyipunrf Ready none 3d v1.8.4 部署federation控制平面 选择杭州的子集群作为Federation的宿主集群安装Federation的控制平面。并配置好本地的kubeconfig。通过运行kubefed init命令来初始化主集群。具体步骤如下 安装kubefed 在hangzhou集群的master节点安装kubefed [rootiZze7z98ssc50pfzt6be9 ~]# curl -L http://aliacs-k8s-cn-hangzhou.oss.aliyuncs.com/bin/kubefed-1.8.4 -o kubefed
[rootiZze7z98ssc50pfzt6be9 ~]# sudo cp kubefed /usr/bin
[rootiZze7z98ssc50pfzt6be9 ~]# sudo chmod x /usr/bin/kubefed
[rootiZze7z98ssc50pfzt6be9 ~]# kubefed version 配置kubeconfig 在杭州集群master节点中配置hangzhoubeijing两个集群的context让改节点能通过切换context连接不同的子集群。要修改的内容如下 1.修改hangzhou集群的kubeconfig的clusterusercontext的名字为hangzhou2.拷贝beijing集群kubeconfig中的clusterusercontext内容到a步骤中kubeconfig并修改相应的clusterusercontext名字为beijing 为了方便初学者我们提供了一个自动化的脚本可以自动通过ssh从您指定的集群中下载kubeconfig配置文件并合并成一个整体。通过执行脚本来自动生成~/.kube/config文件。脚本需要指明从哪些集群上下载kubeconfig文件并合并格式如下python context.py -H hangzhou:1.1.1.1,beijing:2.2.2.2 注意参数替换成你自己的集群Region和IP脚本可能会要求您输入ssh的登录密码。 [rootiZbp1bpj58bdzdosdxxf82Z ~]# curl http://aliacs-k8s-cn-hangzhou.oss.aliyuncs.com/tools/context.py context.py
[rootiZbp1bpj58bdzdosdxxf82Z ~]# sudo pip install pyyaml
[rootiZbp1bpj58bdzdosdxxf82Z ~]# unset KUBECONFIG
[rootiZbp1bpj58bdzdosdxxf82Z ~]# python context.py -H ${HOST}
Info: host, hangzhou:118.31.177.21,beijing:47.95.96.234 .
Info: file /root/.kube/config successfully generated. 配置结果如下 [rootiZbp1bpj58bdzdosdxxf82Z ~]# kubectl config get-contexts
CURRENT NAME CLUSTER AUTHINFO NAMESPACEhangzhou kubernetes-hangzhou kubernetes-admin-hangzhou
* beijing kubernetes-beijing kubernetes-admin-beijing 配置alidns.yaml文件 zones填写您前面申请的域名注意以点号结尾。并且替换您的accesskeyid和accesskeysecret. cat alidns.yaml EOF
[Global]
access-key-id Your-key-id
access-key-secret Your-key-secret
zones spacexnice.xyz.
EOF 初始化控制federation平面 通过本条命令初始化federation控制平面参数如下 kubefed init federation \ # 联邦的名字--host-cluster-contexthangzhou \ # 主集群的context名字--dns-provideralidns \ # DNS服务提供商--dns-zone-namespacexnice.xyz. \ # 前面注册好的域名必须以.结束--dns-provider-configalidns.yaml \ # alidns配置文件--imageregistry.cn-hangzhou.aliyuncs.com/google-containers/hyperkube-amd64:v1.8.4-4_99c084ce \ # hyperkube镜像--etcd-imageregistry.cn-hangzhou.aliyuncs.com/google-containers/etcd-amd64:3.1.11 \ #etcd 镜像--etcd-persistent-storagefalse # 关闭etcd持久存储
[rootiZbp1bpj58bdzdosdxxf82Z ~]# kubefed init federation \--host-cluster-contexthangzhou \--dns-provideralidns \--dns-zone-namespacexnice.xyz. \--dns-provider-configalidns.yaml \--imageregistry.cn-hangzhou.aliyuncs.com/google-containers/hyperkube-amd64:v1.8.4-4_99c084ce \--etcd-imageregistry.cn-hangzhou.aliyuncs.com/google-containers/etcd-amd64:3.1.11 \--etcd-persistent-storagefalseCreating a namespace federation-system for federation system components... done
Creating federation control plane service..... done
Creating federation control plane objects (credentials, persistent volume claim)... done
Creating federation component deployments... done
Updating kubeconfig... done
Waiting for federation control plane to come up..................................................................................................................................................... done
Federation API server is running at: 120.55.196.1 添加集群至federation 目前为止您已经成功的初始化好了Federation的控制平面。接下来需要将各个子集群加入到Federation集群中。 添加hangzhou集群 命令行参数解析kubefed join hangzhou \ #加入联邦的集群命名名字--contextfederation \ #联邦的context--cluster-contexthangzhou \ #要添加集群的context--host-cluster-contexthangzhou #主集群的context
[rootiZbp1bpj58bdzdosdxxf82Z ~]# kubefed join hangzhou \--contextfederation \--cluster-contexthangzhou \--host-cluster-contexthangzhou[rootiZbp1bpj58bdzdosdxxf82Z ~]# kubectl get cluster --contextfederation
NAME STATUS AGE
hangzhou Ready 28s 添加beijing集群 [rootiZbp1bpj58bdzdosdxxf82Z ~]# kubefed join beijing \--contextfederation \--cluster-contextbeijing \--host-cluster-contexthangzhou[rootiZbp1bpj58bdzdosdxxf82Z ~]# kubectl get cluster --contextfederation
NAME STATUS AGE
hangzhou Ready 4m
beijing Ready 59s 后面介绍下集群查询移除集群删除联邦等命令 集群查询 查询注册到Federation的kubernetes集群列表 [rootiZbp1bpj58bdzdosdxxf82Z ~]# kubectl get cluster --contextfederation
NAME STATUS AGE
hangzhou Ready 4m
beijing Ready 59s 移除集群 移除beijing集群 [rootiZbp1bpj58bdzdosdxxf82Z ~]# kubefed unjoin beijing --host-cluster-contexthangzhou --contextfederation[rootiZbp1bpj58bdzdosdxxf82Z ~]# kubectl get clusters --contextfederation
NAME STATUS AGE
hangzhou Ready 1d 删除集群联邦 集群联邦控制平面的删除功能还在开发中目前可以通过删除namespace federation-system的方法来清理注意pv不会删除。命令在host-cluster-context上执行。 [rootiZbp1bpj58bdzdosdxxf82Z ~]# kubectl delete ns federation-system 创建服务 集群联邦支持以下联邦资源这些资源会自动在所有注册的kubernetes集群中创建. Federated ConfigMapFederated ServiceFederated DaemonSetFederated DeploymentFederated IngressFederated NamespacesFederated ReplicaSetsFederated SecretsFederated Events仅存在federation控制平面 创建service [rootiZbp1bpj58bdzdosdxxf82Z ~]# kubectl run nginx --image nginx --contextfederation
[rootiZbp1bpj58bdzdosdxxf82Z ~]# kubectl expose deploy nginx --port 80 --target-port 80 --type LoadBalancer --contextfederation
[rootiZbp1bpj58bdzdosdxxf82Z ~]# kubectl get svc --contextfederation 您还可以通过kubectl scale deploy nginx --replicas3 --contextfederation来扩展nginx副本然后观察nginx应用在各个子集群中的分布情况。 [rootiZbp1bpj58bdzdosdxxf82Z ~]# kubectl get deploy --contextbeijing
[rootiZbp1bpj58bdzdosdxxf82Z ~]# kubectl get deploy --contexthangzhou 创建deployment [rootiZbp1bpj58bdzdosdxxf82Z ~]# cat deployment-nginx.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:name: nginx-deployment
spec:replicas: 3template:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:1.7.9ports:- containerPort: 80
[rootiZbp1bpj58bdzdosdxxf82Z ~]# kubectl create -f deployment-nginx.yaml --contextfederation 查看federation service [rootiZbp1bpj58bdzdosdxxf82Z ~]# kubectl describe svc nginx --contextfederation
Name: nginx
Namespace: default
Labels: appnginx
Annotations: federation.kubernetes.io/service-ingresses{items:[{cluster:hangzhou,items:[{ip:120.55.149.69}]},{cluster:shanghai,items:[{ip:139.196.70.146}]}]}
Selector: appnginx
Type: LoadBalancer
IP:
LoadBalancer Ingress: 120.55.149.69, 139.196.70.146
Port: http 80/TCP
Endpoints: none
Session Affinity: None
Events: none 通过域名访问服务 [rootiZbp1bpj58bdzdosdxxf82Z ~]# curl nginx.default.fed.svc.spacexnice.xyz
!DOCTYPE html
html
head
titleWelcome to nginx!/title
stylebody {width: 35em;margin: 0 auto;font-family: Tahoma, Verdana, Arial, sans-serif;}
/style
/head
body
h1Welcome to nginx!/h1
pIf you see this page, the nginx web server is successfully installed and
working. Further configuration is required./ppFor online documentation and support please refer to
a hrefhttp://nginx.org/nginx.org/a.br/
Commercial support is available at
a hrefhttp://nginx.com/nginx.com/a./ppemThank you for using nginx./em/p
/body
/html 查看云解析dns的record记录 我们可以在阿里云云解析控制台看见刚刚添加的nginx的dns记录。 总结 Federation为您提供一种多集群管理的途径统一管理多云multi-cloud资源并提供了一种灾备的新途径。阿里云Kubernetes服务也将进一步简化Federation的用户体验将容器服务Kubernetes集群管理与Federation完美结合在一起。也欢迎您的意见和建议帮助我们迭代产品能力。阿里云Kubernetes服务 全球首批通过Kubernetes一致性认证简化了Kubernetes集群生命周期管理内置了与阿里云产品集成也将进一步简化Kubernetes的开发者体验帮助用户关注云端应用价值创新。