kubernetes叢集建立pyspider爬蟲系統
kubernetes叢集部署pyspider分散式爬蟲系統
基礎
1. 已安裝、配置kubernetes
2. 叢集中有pyspider與mysql容器映象
3. 有docker基礎
具體步驟
部署mysql
部署redis
部署pyspider相關部件
我們想要在kubernetes叢集中配置mysql服務,首先要保證叢集中的節點上有mysql映象,映象可以從docker Hub中拉取,也可以放在自己的私有倉庫中。
要部署mysql服務,我們需要做兩件事,一是建立RC(Replication Controller),二是建立Service。RC是kubernetes中的副本控制器,也就是說,RC負責自動部署容器化應用。Service是我們訪問tomcat服務的入口地址,我們是通過Service來對該服務就行訪問的。
建立RC與Service物件,我這裡用的是建立yaml檔案的方式。yaml檔案中的內容是宣告式的。這些宣告讓kubernetes做你想要它做的事情。宣告與命令有所不同,宣告是告訴它你的需要是什麼,而不涉及具體的實現的步驟,而命令,如linux中的ls,你是告訴它去做什麼。宣告與命令是不同的,請自己體會。話不多說了,上程式碼:
部署mysql
如果你能將tomcat部署成功了,那麼部署mysql就沒有什麼好講的了。照前面做就行了。
建立mysql RC物件
我將此RC物件命名為mysql-rc1.yaml
直接上程式碼:
apiVersion: v1 kind: ReplicationController metadata: name: mysql spec: replicas: 1 selector: app: mysql template: metadata: labels: app: mysql spec: containers: - image: docker.io/mysql name: mysql ports: - containerPort: 3306 env: #環境變數,必須帶,否則會出錯 - name: MYSQL_ROOT_PASSWORD value: "123456"
不同之處在於建立mysql的RC物件yaml檔案時,注入了一個name為MYSQL_ROOT_PASSWORD的環境變數,這個是給mysql資料庫設定密碼,這個環境變數的注入是必須的,如果沒有此環境變數,雖然RC可以被建立成功,但是系統是無法啟動mysql容器的。不信可以試試。算了,還是給你演示一下吧。
建立mysql RC物件的結果
我把環境變數刪了之後執行的結果如下:
可以看到,刪掉環境變數的mysql RC雖然可以建立成功,但是容器啟動失敗了。
增加環境變數之後的結果
增加環境變數之後就可以啟動起來容器了
建立mysql Service物件
同樣道理,mysql也需要一個訪問入口地址。建立的Service yaml檔名為mysql-svc1.yaml
還是直接上程式碼
apiVersion: v1
kind: Service
metadata:
name: mysql
spec:
ports:
- name: mysql-svc
port: 3306
targetPort: 3306
nodePort: 31101
selector:
app: mysql
type: NodePort
沒什麼好解釋的。
建立mysql Service物件的結果
可以看到,mysql Service物件也已經啟動成功了。
由於前面已經詳細介紹過如何訪問服務了,這裡我就不再贅述了。大家可以自己訪問mysql的服務看看。
需要注意的細節
我認為,在kubernetes中部署應用叢集的時候有兩點特別需要注意的,當然,是我會犯錯的地方,與大家分享:
1. yaml檔案的格式問題
我初次編寫yaml檔案可是花了不少時間,就是因為格式的問題,總是建立不了RC或者Servcice。尤其是需要注意,縮排要用空格縮排而不能用TAB鍵縮排。否則是成功不了的。
2. 理解pod、Service、node IP以及埠的關係
這裡的概念可能會比較難以理解,但一定要搞清楚,這是訪問時的重點
總結
在kubernetes中部署容器,不僅可以用yaml,也可以用Json。還有,現在有許多容器化應用都是通過deployment部署的。當然,如果用RC部署也是可以的。我是第一次在kubernetes中部署容器化應用叢集,所以就從簡單的入手。希望本篇部落格能夠幫助到有些也剛剛接觸kubernetes的同學。