接上一篇通過Rancher部署并擴容Kubernetes叢集基礎篇一
7. 使用ConfigMap配置redis
https://github.com/kubernetes/kubernetes.github.io/blob/master/docs/user-guide/configmap/redis/redis-config
redis-config
redis-pod.yaml
8. 使用kubectl指令管理kubernetes對象
或者
使用kubectl create建立一個配置檔案中定義的對象
删除兩個配置檔案中定義的對象
更新對象
處理configs目錄下所有的對象配置檔案,建立新的對象或者打更新檔現有的對象
遞推處理子目錄下的對象配置檔案
9. 部署無狀态應用
9.1 使用deployment運作一個無狀态應用
deployment.yaml
這裡需要注意一下,rancher1.6.2部署的是kubernetes 1.5.4
這裡的apiVersion要改一下,改成extensions/v1beta1
kubernetes從1.6引入apps/v1beta1.Deployment 替代 extensions/v1beta1.Deployment
顯示這個deployment的資訊
更新deployment
deployment-update.yaml
和deployment.yaml除了p_w_picpath不同之外其餘的内容相同
執行更新後,kubernetes會先建立新的pods,然後再停掉并删除老的pods
已經更新成功了
通過增加replicas的數量來擴充應用
修改deployment-scale.yaml
replicas: 4
删除deployment
建立一個可以複制的應用首選的方式是使用的deployment, deployment會使用ReplicaSet. 在Deployment和ReplicaSet加入到Kubernetes之前,可複制的應用是通過ReplicationController來配置的
9.2 案例: 部署一個以Redis作為存儲的PHP留言闆
第一步: 啟動一個redis master服務
redis-master-deployment.yaml
redis-master-service.yaml
targetPort是後端容器接收外部流量的端口,port是其他任務pods通路service的端口
kubernetes支援兩種主要的模式來發現一個service -- 環境變量和DNS
檢視叢集DNS
第二步: 啟動一個redis slave服務
redis-slave.yaml
第三步: 啟動一個留言闆前端
frontend.yaml
guestbook.php
redis-slave 容器裡面有個/run.sh
redis-master通過kube-dns解析
從外部通路這個留言闆有兩種方式: NodePort和LoadBalancer
更新frontend.yaml
設定 type: NodePort
可以看到frontend對叢集外暴露一個31338端口,通路任意一個叢集節點
http://172.30.30.217:31338/
更新設定frontend.yaml
設定 type: LoadBalancer
使用rancher部署kubernetes,這裡設定type為LoadBalancer後,在rancher上可以看到
kubernetes-loadbalancers
預設對外的端口是80,可以自己調整,還可以rancher LB的容器數量

http://172.30.30.217:888/
http://172.30.30.219:888/
10.部署有狀态應用
StatefulSets是用于部署有狀态應用和分布式系統。部署有狀态應用之前需要先部署有動态持久化存儲
10.1 StatefulSet基礎
使用Ceph叢集作為Kubernetes的動态配置設定持久化存儲
10.2 運作一個單執行個體的有狀态應用
10.3 運作一個多執行個體複制的有狀态應用
10.4 部署WordPress和MySQL案例
10.5 部署Cassandra案例
10.6 部署ZooKeeper案例
參考文檔:
http://blog.kubernetes.io/2016/10/dynamic-provisioning-and-storage-in-kubernetes.html