中文字幕无码久久精品,13—14同岁无码A片,99热门精品一区二区三区无码,菠萝菠萝蜜在线观看视频高清1

您當(dāng)前的位置是:  首頁 > 新聞 > 國(guó)內(nèi) >
 首頁 > 新聞 > 國(guó)內(nèi) >

用Ansible在Openstack上部署Kubernetes

2017-08-15 10:27:38   作者:Jonathan Zhang   來源:開源云中文社區(qū)   評(píng)論:0  點(diǎn)擊:


  用戶對(duì)容器編排工具的需求日益增加。Kubernetes目前備受關(guān)注,經(jīng)常有人問會(huì)不會(huì)在SWITCH(運(yùn)營(yíng)瑞士學(xué)術(shù)網(wǎng)絡(luò)的基金會(huì))提供一個(gè)Kubernetes集群。
  目前,我們建議用戶在SWITCHENGINE之上部署自己的Kubernetes集群。為了確保我們的Openstack部署適用于此解決方案,我們也試了一下。
  在使用kubeadm手動(dòng)部署以學(xué)習(xí)該工具之后,筆者發(fā)現(xiàn)了一個(gè)由Francois Deppierraz撰寫的很棒的可編輯的playbook(https://github.com/infraly/k8s-on-openstack)。我擴(kuò)展了此playbook,使Kubernetes知道SWITCHENGINE實(shí)施了LBaaSv2,該補(bǔ)丁已經(jīng)被合并在原始版本中。
  筆者發(fā)現(xiàn)部署Kubernetes的第一個(gè)問題是完全不支持IPv6。由于SWITCHENGINE中的實(shí)例默認(rèn)獲取IPv6地址,所以在運(yùn)行該playbook時(shí)碰到了問題。你該做的第一件事是用路由器創(chuàng)建自己的租戶網(wǎng)絡(luò),只連接IPv4。這已經(jīng)在我們的標(biāo)準(zhǔn)文檔中詳細(xì)解釋了。
  現(xiàn)在準(zhǔn)備好克隆Ansible playbook:
  • git clone https://github.com/infraly/k8s-on-openstack
  Ansible playbook通過Openstack API創(chuàng)建實(shí)例,所以你必須提供Openstack配置文件。我們把常見的配置文件做了一些擴(kuò)展,其中包含更多特定于此ansible playbook的變量。下面是一個(gè)模板:
  • export OS_USERNAME=username
  • export OS_PASSWORD=mypassword
  • export OS_PROJECT_NAME=myproject
  • export OS_PROJECT_ID=myproject_uuid
  • export OS_AUTH_URL=https://keystone.cloud.switch.ch:5000/v2.0
  • export OS_REGION_NAME=ZH
  • export KEY=keyname
  • export IMAGE="Ubuntu Xenial 16.04 (SWITCHengines)"
  • export NETWORK=k8s
  • export SUBNET_UUID=subnet_uuid
  • export FLOATING_IP_NETWORK_UUID=network_uuid
  讓我們回顧一下有什么變化。添加變量OS_PROJECT_ID也很重要,因?yàn)閯?chuàng)建負(fù)載均衡器的Kubernetes代碼需要此值,并且無法從項(xiàng)目名稱中提取它。要找到uuid只需要使用Openstack cli:
  openstack project show myprojectname -f value -c id
  KEY是將用于啟動(dòng)實(shí)例的現(xiàn)有密鑰對(duì)的名稱。 IMAGE也是自我說明的,目前我只測(cè)試了Xenial。變量NETWORK是你之前創(chuàng)建的租戶網(wǎng)絡(luò)的名稱。創(chuàng)建網(wǎng)絡(luò)時(shí),你還創(chuàng)建了一個(gè)子網(wǎng),你需要將uuid設(shè)置為SUBNET_UUID。最后一個(gè)變量是FLOATING_IP_NETWORK_UUID,它告訴kubernetes網(wǎng)絡(luò)哪里可以獲取浮動(dòng)IP。在SWITCHengines這個(gè)網(wǎng)絡(luò)總是被稱為public,所以你可以這樣獲得uuid:
  openstack network show public -f value -c id
  你可以進(jìn)一步自定義配置——閱讀git存儲(chǔ)庫中的README文件,你會(huì)發(fā)現(xiàn)更多選項(xiàng),如要使用的風(fēng)格或集群大小。當(dāng)配置文件準(zhǔn)備就緒時(shí),你可以運(yùn)行該playbook:
  • source / path / to / config_file
  • cd k8s-on-openstack
  • ansible-playbook site.yaml
  完成所有任務(wù)需要幾分鐘的時(shí)間。當(dāng)一切都完成后,你可以將ssh插入到kubernetes主實(shí)例中,并檢查一切是否按預(yù)期運(yùn)行:
  • ubuntu@k8s-master:~$ kubectl get nodes
  • NAME         STATUS    AGE       VERSION
  • k8s-1        Ready     2d        v1.6.2
  • k8s-2        Ready     2d        v1.6.2
  • k8s-3        Ready     2d        v1.6.2
  • k8s-master   Ready     2d        v1.6.2
  筆者發(fā)現(xiàn)添加bash完成對(duì)kubectl非常有用:
  • source <(kubectl completion bash)
  部署一個(gè)nignx實(shí)例來測(cè)試一切是否正常:
  • kubectl run my-nginx --image=nginx --replicas=2 --port=80
  這將用nginx創(chuàng)建兩個(gè)容器。你可以使用以下命令監(jiān)視進(jìn)度:
  • kubectl get pods
  • kubectl get events
  在這個(gè)階段,容器在運(yùn)行,但仍然無法從外部訪問服務(wù)。一個(gè)辦法是使用Openstack LBaaS來公開它,你可以使用這個(gè)命令:
  • kubectl expose deployment my-nginx --port=80 --type=LoadBalancer
  公開命令將創(chuàng)建Openstack負(fù)載均衡器,并將其配置。要知道公共浮動(dòng)ip地址,你可以使用此命令來描述該服務(wù):
  • ubuntu@k8s-master:~$ kubectl describe service my-nginx
  • Name:my-nginx
  • Namespace:default
  • Labels:run=my-nginx
  Annotations:
  • Selector:run=my-nginx
  • Type:LoadBalancer
  • IP:10.109.12.171
  • LoadBalancer Ingress:10.8.10.15, 86.119.34.151
  • Port:80/TCP
  • NodePort:30620/TCP
  • Endpoints:10.40.0.1:80,10.43.0.1:80
  • Session Affinity:None
  Events:
  • FirstSeenLastSeenCountFromSubObjectPathTypeReasonMessage
  • ------------------------------------------------------------
  • 1m1m1service-controllerNormalCreatingLoadBalancerCreating load balancer
  • 10s10s1service-controllerNormalCreatedLoadBalancerCreated load balancer
  結(jié)論
  有了這篇博文,你應(yīng)該能夠在OpenStack上部署Kubernetes來了解整個(gè)過程。對(duì)于真正的部署,你可能需要進(jìn)行一些定制化。你可以使用github pull請(qǐng)求將補(bǔ)丁共享到ansible playbook。
  請(qǐng)注意,Kubernetes不是沒有bug。當(dāng)刪除部署時(shí),你可能會(huì)發(fā)現(xiàn)Kubernetes無法正確刪除負(fù)載均衡器的bug。
【免責(zé)聲明】本文僅代表作者本人觀點(diǎn),與CTI論壇無關(guān)。CTI論壇對(duì)文中陳述、觀點(diǎn)判斷保持中立,不對(duì)所包含內(nèi)容的準(zhǔn)確性、可靠性或完整性提供任何明示或暗示的保證。請(qǐng)讀者僅作參考,并請(qǐng)自行承擔(dān)全部責(zé)任。

專題