1. 程式人生 > >kubernetes叢集建立pyspider爬蟲系統

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的同學。