本文所說的Hello world是一個web留言板應用,而且是基於PHP+Redis的兩層分佈式架構的web應用,前端PHP web網站經過訪問後端Redis數據庫完成用戶留言的查詢和添加功能,具有讀寫分離能力,留言板內容是從redis中查詢到的,首頁中添加劉潭並提交以後留言會被添加到redis中。php
Redis層採用一個Master與兩個salve,Master負責寫操做,slave負責讀操做,PHPweb層啓動三個實例組成集羣,對網站的訪問進行負載均衡。
本文的例子首選須要將Docker環境和k8s環境搭建完畢,這個在前一節中已經作了講解,有須要的能夠參考前一節內容部署一下Docker和k8s環境。
實驗環境: Centos7.2 64位,虛擬機。
下面進行實例的具體操做。前端
先定義RC來建立pod,而後定義與之關聯的service。
爲redis-master服務新建一個名爲redis-master-controller.yaml的RC定義文件,內容爲:node
apiVersion: v1 kind: ReplicationController metadata: name: redis-master labels: name: redis-master spec: replicas: 1 selector: name: redis-master template: metadata: labels: name: redis-master spec: containers: - name: master image: kubeguide/redis-master ports: - containerPort: 6379
新建好文件以後執行以下命令:mysql
kuberctl create -f redis-master-controller.yaml
刪除:將create換爲delete便可。
查看剛剛新建的redis-master:web
kuberctl get rc
檢查pod信息:redis
kuberctl get pods
下面新建與上面建的pod相關聯的service,service對應的文件redis-master-service.yaml,內容以下:sql
apiVersion: v1 kind: Service metadata: name: redis-master labels: name: redis-master spec: ports: - port: 6379 targetPort: 6379 selector: name: redis-master
建立service:docker
kubectl create -f redis-master-service.yaml
查看新建的service:數據庫
kubectl get services
步驟和redis-master的同樣。
新建文件redis-salve-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
運行kubectl create命令:
kubectl create -f redis-salve-controller.yaml
查看RC:
kubectl get rc
查看pod:
kubectl get pods
配置文件redis-salve-service.yaml內容以下:
apiVersion: v1 kind: Service metadata: name: redis-slave labels: name: redis-slave spec: ports: - port: 6379 selector: name: redis-slave
建立service:
kubectl create -f redis-slave-service.yaml
檢查service:
kubectl get services;
文件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
執行命令kubectl create:
kubectl create -f frontend-controller.yaml
檢查RC:
kunectl get rc
檢查pod:
kubectl get pods
文件frontend-service.yaml內容以下:
apiVersion: v1 kind: Service metadata: name: frontend labels: name: frontend spec: type: NodePort ports: - port: 80 nodePort: 30001 selector: name: frontend
建立服務:
kubectl create -f frontend-service.yaml
檢查service:
kubectl get services;
如個人虛擬機IP爲xx.xx.xx.xx則瀏覽器訪問: xx.xx.xx.xx:30001 成功的話會出現簡單的留言板界面,並可進行留言commit。