摘要:本文是介紹關(guān)于如何創(chuàng)建一個(gè)高效的集群,用于在上使用和的開發(fā)目的。單擊左下角的按鈕,忽略警告并強(qiáng)制訪問頁面。取而代之的,我們將在這里使用,在上創(chuàng)建代理,自動(dòng)設(shè)置這些由服務(wù)器管理的集群。
Kubernetes是我主要學(xué)習(xí)的主題之一。我知道不光是我,還有一定數(shù)量的人愿意在工作之余進(jìn)一步使用和研究它。
本文是介紹關(guān)于如何創(chuàng)建一個(gè)高效的Kubernetes集群,用于在Scaleway上使用Terraform和Rancher 2.x的開發(fā)目的。我假設(shè)你已經(jīng)知道了(或者至少聽過):
Kubernetes
Terraform
Rancher
Scaleway
Cloudflare
概 述
下圖的概要描述了本文嘗試實(shí)現(xiàn)的內(nèi)容:
部署工作大部分將由Terraform自動(dòng)完成。我們將創(chuàng)建一個(gè)Rancher服務(wù)器,在上面添加Rancher代理來創(chuàng)建和管理Kubernetes集群。域解析也將由Terraform自動(dòng)配置到Cloudflare。所有的服務(wù)器都將部署到Scaleway上,而且它們非常的便宜(在撰寫本文時(shí)Start1-S服務(wù)器只花費(fèi)€3.99/mo和€0.008/小時(shí)?。?/p>
為什么選擇Rancher?
如果你想從頭開始學(xué)習(xí)Kubernetes成為一名kubectl魔術(shù)師,這個(gè)出發(fā)點(diǎn)不錯(cuò),我不反對。不過在我看來,僅僅是學(xué)習(xí)Kuberenetes是不夠的,更重要的是你想用它做什么,你想實(shí)現(xiàn)什么。比如,我經(jīng)常開發(fā)微服務(wù)和功能來進(jìn)行測試(特別是webhook集成),并在Kubernetes上運(yùn)行它。當(dāng)然,在管理Kubernetes方面kubectl起到了很大的幫助,但是當(dāng)我想檢查某些服務(wù)的日志或創(chuàng)建一些secrets時(shí),我不得不使用kubectl輸入大量命令創(chuàng)建出大量的清單,這些常讓我感到疲憊。有時(shí)候我只是想簡單地部署一下資源,并不使用清單。我知道有很多工具(如stern、ksonnet等等)可以幫助實(shí)現(xiàn)這些工作流,但是我從Rancher 1.x開始就是忠實(shí)用戶了,知道他們的UI可以讓工作變得更簡單直觀。這也是我為什么在這個(gè)工具集中包含Rancher的原因。
讓我們開始吧!
話不多說,我們開始部署一些資源吧。這兒有一些準(zhǔn)備工作:
準(zhǔn)備一個(gè)Scaleway賬號(hào)
準(zhǔn)備一個(gè)Cloudflare賬號(hào)
在Cloudflare中設(shè)置至少1個(gè)zone(你可以得到一個(gè)免費(fèi)的服務(wù)域比如Freenom)
克隆kenfdev/rancher-scaleway倉庫
安裝terraform
安裝kubectl
我不會(huì)詳細(xì)解釋這些內(nèi)容,因?yàn)槿绻紝懙脑掃@篇文章得爆炸了。你可以自己搜索找到相關(guān)的資源。
在這里有一個(gè)重要的提示。我們將在Scaleway上部署服務(wù)器,這些都不是免費(fèi)的。所以事先要確認(rèn)這一點(diǎn),它會(huì)花費(fèi)一些錢(不過Scaleway非常便宜)。我不會(huì)對這些成本承擔(dān)任何責(zé)任,所以如果你完成了,一定要破壞掉它們。
從Scaleway獲取信息
我們將在Scaleway上自動(dòng)部署服務(wù)器,為此,我們需要有一個(gè)token。在Scaleway中轉(zhuǎn)到Credentials頁面并點(diǎn)擊Create new token。把Secret key記錄下來,因?yàn)槲覀冎髸?huì)用到這個(gè)。
同時(shí),前往Account頁面找到ORGANIZATION ID做好記錄。到現(xiàn)在為止你已經(jīng)完成了Scaleway的部分,Terraform會(huì)處理好其他事情。
從Cloudflare獲取API token
我們需要為創(chuàng)建的Rancher服務(wù)器設(shè)置DNS,為了實(shí)現(xiàn)這一點(diǎn),我們需要獲得Cloudflare的API token。前往Cloudflare下的My Profile,可以在這里找到API Keys。如下圖所示點(diǎn)擊Global API Key的View按鈕。
現(xiàn)在記錄下這個(gè)token,到這里收集信息的工作結(jié)束了。
為Rancher服務(wù)器準(zhǔn)備Terraform資源
現(xiàn)在我們已經(jīng)有了需要收集的信息,那么下一步就是用Terraform來部署了。先去克隆kenfdev/rancher-scaleway倉庫。
首先,前往rancherserver目錄,按照terraform.tfvars.sample創(chuàng)建一個(gè)tfvars文件,打開它:
tfvars文件看起來像這樣:
需要對這些內(nèi)容做修改:
scw_token – 你的Scaleway Secret Token
scw_org – 你的Scaleway Organization ID
admin_password – 你將在Rancher服務(wù)器使用的密碼
rancher_server_url – Rancher服務(wù)器所使用的URL。Terraform會(huì)為你的cloudflare zone設(shè)置一個(gè)rancher子域名。所以如果你的zone名為example.com,那么terraform會(huì)創(chuàng)建一個(gè)記錄鏈接到rancher.example.com。
cloudflare_email – 你Cloudflare中的Email
cloudflare_token – 你Cloudflare的API token
cloudflare_zone – 你的Cloudflare zone
你也可以根據(jù)你自己的需求修改其他變量。
部署Rancher Server
現(xiàn)在我們準(zhǔn)備好了,用Terraform來進(jìn)行部署吧!點(diǎn)擊terraform apply你會(huì)看到像下面這樣的顯示:
5個(gè)資源?
“為什么是5個(gè)資源?我們剛剛不是只部署了1個(gè)服務(wù)器嗎?”你可能會(huì)這么問,其實(shí)我們確實(shí)部署了不止一個(gè)資源,我們部署了:
1個(gè)服務(wù)器(Rancher服務(wù)器)
1個(gè)為cloud-init進(jìn)程引導(dǎo)Rancher服務(wù)器的用戶數(shù)據(jù)
1個(gè)安全組
1條附加到安全組來控制流量的規(guī)則
1條指向Rancher服務(wù)器的Cloudflare DNS記錄
這樣便添加了5個(gè)資源,現(xiàn)在點(diǎn)擊yes。如果一切進(jìn)行順利,你應(yīng)該能看到這樣的信息:
如果檢查Scaleway的話:
看起來服務(wù)器是部署好了,那DNS如何呢?
它看起來也添加到了Cloudflare!現(xiàn)在我們用這個(gè)地址訪問Rancher服務(wù)器:
https://rancher.your.zone/
如果你使用的是Chrome的話應(yīng)該會(huì)看到警告提示
這是因?yàn)槟氵€沒有給服務(wù)器設(shè)置合法的SSL證書。單擊左下角的按鈕,忽略警告并強(qiáng)制訪問頁面。
瞧!我們用1條命令部署了一個(gè)帶有DNS的Rancher服務(wù)器!很酷吧!輸入你保存在tfvars中設(shè)置的密碼,應(yīng)該能登陸了。
現(xiàn)在你有了一個(gè)正在工作的Rancher服務(wù)器!你可以在UI上開始為各個(gè)位置創(chuàng)建Kubernetes集群,不過本文不會(huì)介紹這些用例。取而代之的,我們將在這里使用Terraform,在Scaleway上創(chuàng)建Rancher代理,自動(dòng)設(shè)置這些由Rancher服務(wù)器管理的集群。
為Rancher代理準(zhǔn)備Terraform資源
返回kenfdev/rancher-scaleway倉庫。現(xiàn)在,前往rancheragent目錄。同樣復(fù)制一份terraform.tfvars.sample給terraform.tfvars。
現(xiàn)在打開terraform.tfvars:
和Rancher服務(wù)器時(shí)一樣填入憑證信息,這里列出一些要記住的變量:
rancher_server_address – Rancher Serve的地址,它可能是一個(gè)IP或者域名,不過我建議你在之前的步驟中設(shè)置成域名
count_agent_all_nodes – 統(tǒng)計(jì)創(chuàng)建的擁有all roles(etcd, controlplane, worker)的節(jié)點(diǎn)數(shù)。如果你只是取體驗(yàn)一下Kubernetes集群,那么有一個(gè)就足夠了。
count_agent_etcd_nodes – 統(tǒng)計(jì)創(chuàng)建的擁有etcd role的節(jié)點(diǎn)數(shù)
count_agent_controlplane – 統(tǒng)計(jì)創(chuàng)建的擁有controlplane role的節(jié)點(diǎn)數(shù)
count_agent_worker_nodes – 統(tǒng)計(jì)創(chuàng)建的擁有worker role的節(jié)點(diǎn)數(shù)
部署Rancher代理
現(xiàn)在再一次點(diǎn)擊terraform apply,將rancher代理部署到Scaleway上。
選擇yes,服務(wù)器就部署好了。幾分鐘后你可以看到資源部署完畢:
同時(shí),在Rancher服務(wù)器的UI下,你可以看到一個(gè)新的集群注冊好了。
再過一會(huì),你可以看到Kubernetes集群部署完畢(Active)!
這也很酷對吧?我們可以在Internet(Scaleway)上創(chuàng)建自己的Kubernetes集群,而這僅僅通過幾行命令!
測試Ingress控制器
現(xiàn)在我們可以使用Kubernetes集群了,讓我們看看Nginx Ingress控制器是否按照預(yù)期工作。在rancheragent目錄中,打開dns.tf 文件并添加下面的信息:
這將創(chuàng)建一個(gè)Cloudflare記錄來指向具有all roles的Rancher代理節(jié)點(diǎn)。點(diǎn)擊terraform apply,在Cloudflare設(shè)置DNS。
現(xiàn)在我們訪問http://default.your.zone ,我們還沒有在集群上配置任何Ingress,因此需要訪問默認(rèn)后端。
嘿!我們可以看到Ingress控制器正按我們期望的運(yùn)作著。
通過kubectl訪問集群
最后,我們來試試能不能通過kubectl訪問這個(gè)集群。拉取kubeconfig十分容易。只要在集群層找到按鈕即可:
把config文件復(fù)制或者下載到model上:
用kubectl和KUBECONFIG獲取一些信息
成功獲得了關(guān)于節(jié)點(diǎn)的信息,pods又是如何呢?
只用了簡單的kubectl就能輕松獲得信息,你也可以通過Rancher UI或者kubectl部署資源。
清 理
如果你想繼續(xù)使用集群,你可以從這時(shí)起繼續(xù)使用,不過我下面要介紹的是如果你已經(jīng)使用完畢,該如何把這一切清理掉。
破壞掉Rancher代理和Cloudflare資源
執(zhí)行下面的命令:
銷毀Rancher服務(wù)器和Cloudflare資源
確保Scaleway上沒有任何資源了(只有默認(rèn)的安全組)。否則你還要為這些資源付費(fèi)。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/32764.html
摘要:目前,亞太地區(qū)的組織機(jī)構(gòu)每周會(huì)遭受起攻擊。實(shí)施必要的程序以防止和戰(zhàn)勝勒索軟件攻擊對任何企業(yè)而言都至關(guān)重要,中小企業(yè)尤為如此。鑒于市場對更完善的勒索軟件實(shí)踐簡化的業(yè)務(wù)流程以及業(yè)務(wù)敏捷性的需求不斷增長,中小企業(yè)及其人員越來越青睞。在僅僅一年多的時(shí)間里,新冠疫情給所有公司的經(jīng)營方式都帶來了以往數(shù)年才能發(fā)生的改變。據(jù)麥肯錫報(bào)道,各企業(yè)已提前三到四年開始部署客戶和供應(yīng)鏈互動(dòng)以及內(nèi)部運(yùn)營的數(shù)字化進(jìn)程。但...
摘要:在容器領(lǐng)域內(nèi),已經(jīng)成為了容器編排和管理的社區(qū)標(biāo)準(zhǔn)。就是的邏輯擴(kuò)展,它的核心目標(biāo)是為了更加高效和安全的應(yīng)用發(fā)布。第二個(gè)問題就是,生產(chǎn)環(huán)境的發(fā)布權(quán)限一般都是需要嚴(yán)格控制的,通常只有應(yīng)用管理員或者運(yùn)維管理員才有生產(chǎn)發(fā)布權(quán)限。 為了解決傳統(tǒng)應(yīng)用升級(jí)緩慢、架構(gòu)臃腫、不能快速迭代、故障不能快速定位、問題無法快速解決等問題,云原生這一概念橫空出世。云原生可以改進(jìn)應(yīng)用開發(fā)的效率,改變企業(yè)的組織結(jié)構(gòu),甚...
摘要:在這種情況下,以防干擾其他集群租戶,調(diào)度器可能會(huì)考慮將作為驅(qū)逐的候選對象。其結(jié)果是負(fù)載均衡和調(diào)度之間交互作用。 每當(dāng)談及Kubernetes,我們經(jīng)常聽到諸如資源管理、調(diào)度和負(fù)載均衡等術(shù)語。雖然Kubernetes提供了許多功能,但更關(guān)鍵的還是要了解這些概念,只有這樣才能更好地理解如何放置、管理并恢復(fù)工作負(fù)載。在這篇文章中,我提供了每個(gè)功能的概述,并解釋了它們是如何在Kubernete...
摘要:在這種情況下,以防干擾其他集群租戶,調(diào)度器可能會(huì)考慮將作為驅(qū)逐的候選對象。其結(jié)果是負(fù)載均衡和調(diào)度之間交互作用。 每當(dāng)談及Kubernetes,我們經(jīng)常聽到諸如資源管理、調(diào)度和負(fù)載均衡等術(shù)語。雖然Kubernetes提供了許多功能,但更關(guān)鍵的還是要了解這些概念,只有這樣才能更好地理解如何放置、管理并恢復(fù)工作負(fù)載。在這篇文章中,我提供了每個(gè)功能的概述,并解釋了它們是如何在Kubernete...
閱讀 3302·2021-10-11 10:59
閱讀 2864·2021-10-11 10:58
閱讀 2277·2021-09-04 16:45
閱讀 2760·2019-08-30 15:44
閱讀 703·2019-08-30 15:44
閱讀 3226·2019-08-30 10:51
閱讀 1621·2019-08-29 18:46
閱讀 2782·2019-08-29 13:57