中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Kubernetes怎么實現留言板功能

發布時間:2021-09-09 12:07:42 來源:億速云 閱讀:126 作者:chen 欄目:云計算

本篇內容介紹了“Kubernetes怎么實現留言板功能”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

基礎環境

系統版本:CentOS Linux release 7.5.1804 (Core)

kubernetes版本:kubernetes1.3

項目背景

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

項目架構

    Kubernetes怎么實現留言板功能

  Web層是一個基于 PHP 頁面的 Apache 服務,啟動 3 個實例組成集群,實現訪問網站的負載均衡。Redis Master啟動 1 個實例用于寫操作(添加留言),Redis Slave 啟動兩個實例用于讀操作(讀取留言)。Redis Master與 Slave 的數據同步由 Redis 具備的數據同步機制完成。

服務部署

1. Redis Master 部署

1.1  創建 redis-master  RC

可以先定義 Service,然后定義一個 RC來創建和控制相關聯的 Pod,或者先定義 RC 來創建 Pod,然后定義與之關聯的 Service。

首先為 redis-master 創建一個名為 redis-master 的 RC 定義文件 redis-master-controller.yaml。

# cat redis-master-controller.yaml 
apiVersion: v1
kind: ReplicationController   #表示這是一個RC
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

創建完成之后,在master節點上發布到集群中

# kubectl create -f redis-master-controller.yaml 
replicationcontroller/redis-master created

用kubectl get 命令確認RC和Pod 創建成功

# kubectl get rc
NAME           DESIRED   CURRENT   READY   AGE
redis-master   1         1         0       70s
# kubectl get pods -o wide| grep redis
redis-master-j58mw  1/1     Running   0    3m59s   172.17.39.7   192.168.200.130   <none>  <none>

1.2  創建 redis-master service

redis-master Pod 已創建且正常運行后,在創建與之關聯的Service

# cat redis-master-service.yaml 
apiVersion: v1
kind: Service
metadata:
 name: redis-master
 labels: 
  name: redis-master
spec:
 ports:
 - port: 6379
   targetPort: 6379
 selector:
  name: redis-master

運行kubectl create 命令創建該service

# kubectl create -f redis-master-service.yaml 
service/redis-master created
# kubectl get services | grep redis-master
redis-master     ClusterIP   10.0.0.116   <none>    6379/TCP       40s

2. Redis slave 部署

本示例啟動啟動 redis-slave 服務的兩個副本,每個副本上的 Redis 進程都與 redis-master進行數據同步,與 redis-master 共同組成了一個具備讀寫分離能力的 Redis集群。留言板的PHP網頁通過訪問 redis-slave 服務來讀取留言數據。

2.1   創建 redis-slave RC

# cat 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

在容器的配置部分設置了一個環境變量 GET_HOSTS_FROM=env ,意思是從環境變量中獲取 redis-master服務的 IP 地址信息。

redis-slave 鏡像中的啟動腳本 /run.sh 的內容為:

# kubectl create -f redis-slave-controller.yaml 
replicationcontroller/redis-slave created
# kubectl get rc | grep redis
redis-master   1         1         1       45m
redis-slave    2         2         2       103s
# kubectl get pod | grep redis
redis-master-j58mw                  1/1     Running   0         45m
redis-slave-c42bx                   1/1     Running   0         2m3s
redis-slave-s74b8                   1/1     Running   0         2m3s

2.2  創建redis-slave  service

創建與redis-slave 相關的Service 服務,類似于 redis-master服務。

# cat redis-slave-service.yaml
apiVersion: v1
kind: Service
metadata:
 name: redis-slave
 labels: 
  name: redis-slave
spec:
 ports:
 - port: 6379
   targetPort: 6379
 selector:
  name: redis-slave

運行kubectl 創建 Service

# kubectl create -f redis-slave-service.yaml 
service/redis-slave created
# kubectl get svc | grep redis
redis-master     ClusterIP   10.0.0.116   <none>     6379/TCP       39m
redis-slave     ClusterIP   10.0.0.173   <none>     6379/TCP       49s
 

3. 部署frontend

3.1 創建部署 frontend rc

# cat 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

在容器的配置部分設置了一個環境變量 GET_HOSTS_FROM=env ,意思是從環境變量中獲取 redis-master 和 redis-slave 服務的 IP 地址信息。

# kubectl create -f frontend-controller.yaml 
replicationcontroller/frontend created

查看創建的

# kubectl get rc
NAME           DESIRED   CURRENT   READY   AGE
frontend       3         3         3       5m1s
redis-master   1         1         1       67m
redis-slave    2         2         2       24m
# kubectl get pods
NAME                               READY   STATUS   RESTARTS   AGE
frontend-mnd85                      1/1     Running   0         5m43s
frontend-pmpdb                      1/1     Running   0         5m43s
frontend-zd2n5                      1/1     Running   0         5m43s
3.2 創建部署 frontend service
最后創建 frontend Service,主要目的是使用 Service 的 NodePort 給 Kuberbetes 集群中的 Service 映射一個外網可以訪問的端口,這樣,外部網絡就可以通過 NodeIP+NodePort 的方式訪問集群中的服務了。

# cat frontend-service.yaml
apiVersion: v1
kind: Service
metadata:
name: frontend
labels:
  name: frontend
spec:
type: NodePort
ports:
- port: 80
   nodePort: 30003
selector:
  name: frontend

運行kubectl create 命令發布到集群中

# kubectl create -f frontend-service.yaml
service/frontend created
# kubectl get svc
NAME       TYPE       CLUSTER-IP   EXTERNAL-IP   PORT(S)         AGE
frontend     NodePort    10.0.0.145   <none>        80:30003/TCP     24s

web頁面瀏覽

http://192.168.200.129:30003/,http://192.168.200.130:30003/      備注:為 Node節點的IP

Kubernetes怎么實現留言板功能

再次登錄會查看到留言,說明數據讀取寫入沒有問題。

“Kubernetes怎么實現留言板功能”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

准格尔旗| 龙里县| 武夷山市| 青河县| 东乌珠穆沁旗| 开化县| 平和县| 蒙城县| 全南县| 天长市| 望谟县| 泗水县| 根河市| 云安县| 松滋市| 定日县| 祁门县| 龙陵县| 凤城市| 穆棱市| 同德县| 浪卡子县| 锡林郭勒盟| 固原市| 蓬莱市| 南溪县| 岳普湖县| 凤山县| 广河县| 故城县| 维西| 锦州市| 明水县| 廊坊市| 怀安县| 新昌县| 南涧| 湘潭市| 和林格尔县| 南城县| 谢通门县|