一、介紹
本案例基于Kubernetes和Docker,其中包括
1、web前端2、redis master3、redis slave其中web前端通過javascript redis api和redis master交互kubernetes體系架構

二、配置
0、先決條件
Kubernetes 集群1、啟動redis master使用replication controller確保只有一個pod在運行(當某個節點down了,rc會在另一個健康的node啟動redis master),但可能會有數據丟失。
[root@centos1 example]# kubectl create -f redis-master-controller.json replicationcontrollers/redis-master[root@centos1 example]# kubectl get rcCONTROLLER CONTAINER(S) IMAGE(S) SELECTOR REPLICASredis-master master redis name=redis-master 1
驗證master運行成功,如下展示了pod運行在centos2/192.168.1.112這臺機器上
[root@centos1 example]# kubectl get podsPOD IP CONTAINER(S) IMAGE(S) HOST LABELS STATUS CREATED MESSAGEredis-master-svar7 172.17.0.9 centos2/192.168.1.112 name=redis-master Running 55 seconds master redis Running 55 seconds
SSH到centos2/192.168.1.112查看docker狀態
[root@centos2 yum.repos.d]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES91689ce56668 redis:latest "/entrypoint.sh redi 3 minutes ago Up 3 minutes k8s_master.52732b08_redis-master-svar7_default_5b6d5485-1894-11e5-b3ad-000c293c8c19_97e79b7b 38c3180813c3 gcr.io/google_containers/pause:0.8.0 "/pause" 3 minutes ago Up 3 minutes k8s_POD.49eee8c2_redis-master-svar7_default_5b6d5485-1894-11e5-b3ad-000c293c8c19_298e038f
注意:kubectl create執行后,如果鏡像不存在,會執行docker pull,根據網絡情況,下載中的pods 在kubertnetes UI上會顯示pending狀態
2、啟動master service一個kubernetes service會對一個或多個container進行負載均衡,這是通過我們上面redis-master中定義的labels元數據實現的,值得注意的是,在redis中只有一個master,但是我們依然為它創建一個service,這是因為這樣我們就能使用一個elastic IP來路由到具體某一個master。
kubernetes集群中的service是通過container中的環境變量實現服務發現的,service基于pod label實現container的負載均衡。在第一步中創建的pod包含了一個label“name=redis-master”,service的selector字段決定了service將流量轉發給哪個pod,port和targetPort信息定義了service proxy運行在什么端口。[root@centos1 example]# kubectl create -f redis-master-service.json services/redis-master[root@centos1 example]# kubectl get servicesNAME LABELS SELECTOR IP(S) PORT(S)redis-master name=redis-master name=redis-master 10.254.154.90 6379/TCP
新聞熱點
疑難解答