k8s之Hello World(四)

實例:Guestbook留言板系統將經過Pod、RC、Service等資源對象搭建完成,成功啓動後在網頁中顯示一條「Hello World」留言。其系統架構是一個基於PHP+Redis的分佈式Web應用,前端PHP Web網站經過訪問後端的Redis來完成用戶留言的查詢和添加功能。同時Redis以Master+Slave的模式進行部署,實現數據的讀寫分離能力。php

 

架構圖:前端

 

1、建立redis-master的RC定義文件
 
vim redis-master-controller.yaml
apiVersion: v1
kind: ReplicationController   #代表這是一個RC
metadata:
   name: redis-master
   labels: 
     name: redis-master
spec:
   replicas: 1
   selector:                  #spec.selector是RC的Pod選擇器,監控和管理擁有這些標籤(Label)的Pod實例,確保當前集羣上始終有且僅有replicas個Pod實例在運行,這裏設置replicas=1表示只運行一個名爲redis-master的Pod實例,當集羣中運行的Pod數量小於replicas時,RC會根據spec.template段定義的Pod模塊來生成一個新的Pod實例,lebels屬性指定了該Pod的標籤,這裏的labels必須匹配RC的spec.selector
     name: redis-master
   template:
     metadata:
       labels:
         name: redis-master
     spec:
       containers:
       - name: master
         image: kubeguide/redis-master
         ports:
         - containerPort: 6379

 

kubectl create -f redis-master-controller.yaml

 

二、建立與之關聯的Service(服務)定義文件
 
vim redis-master-service.yaml
apiVersion: v1
kind: Service
metadata: 
  name: redis-master #metadata.name是Service的服務名
  labels: 
    name: redis-master
spec:
  ports:
  - port: 6379          #port屬性定義的是Service的虛擬端口號
    targetPort: 6379    #targetPort屬性指定後端Pod內容器應用監聽的端口號
  selector:             #spec.selector肯定了選擇哪些Pod
    name: redis-master

 

kubectl create -f redis-master-service.yaml

 

三、建立redis-slave RC定義文件
 
vim redis-slave-controller.yaml
apiVersion: v1
kind: ReplicationController
metadata:
   name: redis-slave
   labels:
     name: redis-slave
spec:
   replicas: 2
   selector:
     name: redis-slave
   template:
     metadata:
       labels:
         name: redis-slave
     spec:
       containers:
         - name: slave
           image: kubeguide/guestbook-redis-slave
           env:
           - name: GET_HOSTS_FROM
             value: env
           ports:
           - containerPort: 6379

 

四、建立redis-slave Service文件
 
vim redis-slave-service.yaml
apiVersion: v1
kind: Service
metadata:
  name: redis-slave
  labels:
    name: redis-slave
spec:
  ports:
  - port: 6379
  selector:
    name: redis-slave

 

五、建立frontend RC
 
vim frontend-controller.yaml
apiVersion: v1
kind: ReplicationController
metadata:
  name: frontend
  labels:
    name: frontend
spec:
  replicas: 3
  selector:
    name: frontend
  template:
    metadata:
      labels:
        name: frontend
    spec:
      containers:
      - name: frontend
        image: kubeguide/guestbook-php-frontend
        env:
        - name: GET_HOSTS_FROM
          value: env
        ports:
        - containerPort: 80

 

六、建立frontend Service
 
vim frontend-service.yaml
apiVersion: v1
kind: Service
metadata:
   name: frontend
   labels:
     name: frontend
spec:
   type: NodePort
   ports:
   - port: 80
     nodePort: 30001
   selector:
     name: frontend

 

七、經過瀏覽器訪問frontend頁面node

相關文章
相關標籤/搜索