• <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>
    您當前的位置是:  首頁 > 新聞 > 國內 >
     首頁 > 新聞 > 國內 >

    用Ansible在Openstack上部署Kubernetes

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


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

    專題

    亚洲精品网站在线观看不卡无广告,国产a不卡片精品免费观看,欧美亚洲一区二区三区在线,国产一区二区三区日韩 咸阳市| 芦溪县| 游戏| 龙胜| 贞丰县| 宁化县| 阿荣旗| 焦作市| 高台县| 巴楚县| 富平县| 正镶白旗| 项城市| 东丽区| 读书| 特克斯县| 台南县| 吴川市| 遂昌县| 涞水县| 新郑市| 肥西县| 噶尔县| 宜黄县| 疏勒县| 庆元县| 固原市| 武邑县| 金寨县| 锦屏县| 泰顺县| 汉中市| 辽宁省| 合肥市| 松溪县| 托克托县| 宣城市| 金山区| 二连浩特市| 全椒县| 五河县| http://444 http://444 http://444 http://444 http://444 http://444