• <strike id="fdgpu"><input id="fdgpu"></input></strike>
    <label id="fdgpu"></label>
    <s id="fdgpu"><code id="fdgpu"></code></s>

  • <label id="fdgpu"></label>
  • <span id="fdgpu"><u id="fdgpu"></u></span>

    <s id="fdgpu"><sub id="fdgpu"></sub></s>
    您當前的位置是:  首頁(yè) > 新聞 > 國內 >
     首頁(yè) > 新聞 > 國內 >

    用Ansible在Openstack上部署Kubernetes

    2017-08-15 10:27:38   作者:Jonathan Zhang   來(lái)源:開(kāi)源云中文社區   評論:0  點(diǎn)擊:


      用戶(hù)對容器編排工具的需求日益增加。Kubernetes目前備受關(guān)注,經(jīng)常有人問(wèn)會(huì )不會(huì )在SWITCH(運營(yíng)瑞士學(xué)術(shù)網(wǎng)絡(luò )的基金會(huì ))提供一個(gè)Kubernetes集群。
      目前,我們建議用戶(hù)在SWITCHENGINE之上部署自己的Kubernetes集群。為了確保我們的Openstack部署適用于此解決方案,我們也試了一下。
      在使用kubeadm手動(dòng)部署以學(xué)習該工具之后,筆者發(fā)現了一個(gè)由Francois Deppierraz撰寫(xiě)的很棒的可編輯的playbook(https://github.com/infraly/k8s-on-openstack)。我擴展了此playbook,使Kubernetes知道SWITCHENGINE實(shí)施了LBaaSv2,該補丁已經(jīng)被合并在原始版本中。
      筆者發(fā)現部署Kubernetes的第一個(gè)問(wèn)題是完全不支持IPv6。由于SWITCHENGINE中的實(shí)例默認獲取IPv6地址,所以在運行該playbook時(shí)碰到了問(wèn)題。你該做的第一件事是用路由器創(chuàng )建自己的租戶(hù)網(wǎng)絡(luò ),只連接IPv4。這已經(jīng)在我們的標準文檔中詳細解釋了。
      現在準備好克隆Ansible playbook:
    • git clone https://github.com/infraly/k8s-on-openstack
      Ansible playbook通過(guò)Openstack API創(chuàng )建實(shí)例,所以你必須提供Openstack配置文件。我們把常見(jiàn)的配置文件做了一些擴展,其中包含更多特定于此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也很重要,因為創(chuàng )建負載均衡器的Kubernetes代碼需要此值,并且無(wú)法從項目名稱(chēng)中提取它。要找到uuid只需要使用Openstack cli:
      openstack project show myprojectname -f value -c id
      KEY是將用于啟動(dòng)實(shí)例的現有密鑰對的名稱(chēng)。 IMAGE也是自我說(shuō)明的,目前我只測試了Xenial。變量NETWORK是你之前創(chuàng )建的租戶(hù)網(wǎng)絡(luò )的名稱(chēng)。創(chuàng )建網(wǎng)絡(luò )時(shí),你還創(chuàng )建了一個(gè)子網(wǎng),你需要將uuid設置為SUBNET_UUID。最后一個(gè)變量是FLOATING_IP_NETWORK_UUID,它告訴kubernetes網(wǎng)絡(luò )哪里可以獲取浮動(dòng)IP。在SWITCHengines這個(gè)網(wǎng)絡(luò )總是被稱(chēng)為public,所以你可以這樣獲得uuid:
      openstack network show public -f value -c id
      你可以進(jìn)一步自定義配置——閱讀git存儲庫中的README文件,你會(huì )發(fā)現更多選項,如要使用的風(fēng)格或集群大小。當配置文件準備就緒時(shí),你可以運行該playbook:
    • source / path / to / config_file
    • cd k8s-on-openstack
    • ansible-playbook site.yaml
      完成所有任務(wù)需要幾分鐘的時(shí)間。當一切都完成后,你可以將ssh插入到kubernetes主實(shí)例中,并檢查一切是否按預期運行:
    • 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ā)現添加bash完成對kubectl非常有用:
    • source <(kubectl completion bash)
      部署一個(gè)nignx實(shí)例來(lái)測試一切是否正常:
    • kubectl run my-nginx --image=nginx --replicas=2 --port=80
      這將用nginx創(chuàng )建兩個(gè)容器。你可以使用以下命令監視進(jìn)度:
    • kubectl get pods
    • kubectl get events
      在這個(gè)階段,容器在運行,但仍然無(wú)法從外部訪(fǎng)問(wèn)服務(wù)。一個(gè)辦法是使用Openstack LBaaS來(lái)公開(kāi)它,你可以使用這個(gè)命令:
    • kubectl expose deployment my-nginx --port=80 --type=LoadBalancer
      公開(kāi)命令將創(chuàng )建Openstack負載均衡器,并將其配置。要知道公共浮動(dòng)ip地址,你可以使用此命令來(lái)描述該服務(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
      結論
      有了這篇博文,你應該能夠在OpenStack上部署Kubernetes來(lái)了解整個(gè)過(guò)程。對于真正的部署,你可能需要進(jìn)行一些定制化。你可以使用github pull請求將補丁共享到ansible playbook。
      請注意,Kubernetes不是沒(méi)有bug。當刪除部署時(shí),你可能會(huì )發(fā)現Kubernetes無(wú)法正確刪除負載均衡器的bug。
    【免責聲明】本文僅代表作者本人觀(guān)點(diǎn),與CTI論壇無(wú)關(guān)。CTI論壇對文中陳述、觀(guān)點(diǎn)判斷保持中立,不對所包含內容的準確性、可靠性或完整性提供任何明示或暗示的保證。請讀者僅作參考,并請自行承擔全部責任。

    專(zhuān)題

    亚洲精品网站在线观看不卡无广告,国产a不卡片精品免费观看,欧美亚洲一区二区三区在线,国产一区二区三区日韩 北海市| 柳林县| 清远市| 茌平县| 贵南县| 涡阳县| 靖西县| 伊吾县| 黄梅县| 大新县| 惠来县| 开远市| 夏邑县| 上林县| 绍兴市| 镇沅| 宁明县| 吴江市| 石家庄市| 庆安县| 庄浪县| 神农架林区| 中江县| 开阳县| 浏阳市| 吴忠市| 济宁市| 上林县| 宜君县| 锦州市| 青浦区| 洞头县| 福建省| 平塘县| 玉田县| 扎鲁特旗| 西丰县| 井陉县| 仁布县| 中江县| 昌邑市| http://444 http://444 http://444 http://444 http://444 http://444