<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ***如果你的kubernetes的集群已經完成了搭建,當你不知道怎么使用這套架構,下面我們一起來用k8s集群搭建一個簡單的微服務應用:*** * [ ] 這個微服務應用是一個簡單的php程序留言板: * [ ] web應用是基于appche運行php程序 * [ ] 后面是一個redis主從結構,我們用redis一主兩從的模式 * * * * * 本例中將用到3個Docker鏡像,鏡像下載地址為:https://hup.docker.com/u/kubeguide 1. redis-master:用于前端web進行寫留言操作的redis服務,其中已經保存了一條內容為hello world的留言。 2. redis-slave: 用于前端web進行讀留言的操作熱redis,并與redis-master同步 3. frontend:phpweb服務,在網頁上展示內容,也提供一個文本框提供訪客添加留言 * * * * * ![](https://box.kancloud.cn/f7271153c5ee0cfe78da6f72b105f6a5_2166x442.png) * * * * * 下面我們來一起操作: 我們先為redis-master創建一個RC定義文件:(RC主要是來定義副本的) ~~~ [root@localhost gustboo]# cat redis-master-controller.yaml 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 ~~~ * kind為ReplicationController 表示為副本控制器 * metadata.name: 第一rc名字 * metadata.labels:rc的標簽 * spec.replicas=1這里我們只運行一個master實例 * 當運行的實例的副本少于設置的當前的副本數量時,他會根據定義的template來重新生成副本。 * containerPort:設置redis在容器中運行的port * * * * * 當定義好了rc文件后,我們在k8s集群中來城建這個rc ~~~ kubectl create -f redis-master-controller.yaml [root@localhost gustboo]# kubectl get rc NAME DESIRED CURRENT READY AGE redis-master 1 1 1 2h [root@localhost gustboo]# kubectl get pod NAME READY STATUS RESTARTS AGE redis-master-r04fz 1/1 Running 0 2h ~~~ 當READY=1和status=Running 說名我們當rc創建好了 * * * * * 下面我們來創建master的svc:(svc就是service,用來定義服務的) ~~~ [root@localhost gustboo]# 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 ~~~ 注意:port:6379 和targetport:6379 把容器里面的redis端口映射映射到虛擬ip的6379 來創建redis-master的svc ~~~ [root@localhost gustboo]# kubectl get svc NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE redis-master 10.254.211.158 <none> 6379/TCP 2h ~~~ 這樣redis-master就搭建好了 下一步我們來搭建redis-slave 我們一樣也是準備好redis-slave的rc和svc的文件 ~~~ [root@localhost gustboo]# 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 ~~~ * * * * * ~~~ [root@localhost gustboo]# cat redis-slave-service.yaml apiVersion: v1 kind: Service metadata: name: redis-slave labels: name: redis-slave spec: ports: - port: 6379 selector: name: redis-slave ~~~ 這redis-slave和redis-master的rc文件有所不同: 我們可以看到redis-slave的rc文件中多出了env這個配置,這個是環境變量的配置,我們都知道,redis主從模式,需要redis-slave去同步主的redis,這個時候,我們不能提前知道k8分配給redismaster的ip是多少,k8s里面有有兩個方式去獲取redis-master的ip 第一中是通過環境變量,第二中是通過dns,我們這里用第一種,當redis-master生成好了后,系統會自動生成環境變量: ~~~ #env REDIS_MASTER_PORT_6379_TCP_PROTO=tcp REDIS_MASTER_PORT=tcp://10.254.211.158:6379 ~~~ 我們可以看到master的環境變量已經生成好了,我們通過制作redis-slave的鏡像來實現主從,下面的腳本在redis-slave鏡像中,啟動時就運行 ~~~ root@redis-slave-w3zr1:/# cat run.sh #!/bin/bash # Copyright 2014 The Kubernetes Authors All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. if [[ ${GET_HOSTS_FROM:-dns} == "env" ]]; then redis-server --slaveof ${REDIS_MASTER_SERVICE_HOST} 6379 else redis-server --slaveof redis-master 6379 fi ~~~ 這個腳本主要就是判斷容器設置中有無env環境變量,有就直接用env,沒有就用dns服務器發現。(前提是要搭好dns,這里我們不做討論) 我們來創建我們的redis-slave ~~~ kubectl create -f redis-slave-controller.yaml kubectl create -f redis-slave-service.yaml [root@localhost gustboo]# kubectl get svc pod rc NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE redis-slave 10.254.160.65 <none> 6379/TCP 2h redis-slave-w3zr1 1/1 Running 0 2h redis-slave-xq3pf 1/1 Running 0 2h redis-slave 2 2 2 2h ~~~ 這樣我們的redis-slave就搭建好了,redis的主從模式就搭建好了 最好我們來創建我們的前臺web 準備好我們svc和rc文件 ~~~ [root@localhost gustboo]# 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_HOST_FROM value: env ports: - containerPort: 80 ~~~ ~~~ [root@localhost gustboo]# cat frontend-service.yaml apiVersion: v1 kind: Service metadata: name: frontend labels: name: frontend spec: type: NodePort ports: - port: 80 nodePort: 30001 selector: name: frontend ~~~ 最后我們來看我們集群有些pod ~~~ [root@localhost gustboo]# kubectl get pod,svc,rc,endpoints NAME READY STATUS RESTARTS AGE po/frontend-7mfsh 1/1 Running 0 2h po/frontend-m8fkw 1/1 Running 0 2h po/frontend-x4tzj 1/1 Running 0 2h po/my-nginx-543887649-4gh28 1/1 Running 14 19d po/my-nginx-543887649-lxxcw 1/1 Running 14 19d po/my-nginx-pod-2945913857-88lml 1/1 Running 14 19d po/my-nginx-pod-2945913857-nwrlv 1/1 Running 14 19d po/redis-master-r04fz 1/1 Running 0 3h po/redis-slave-w3zr1 1/1 Running 0 2h po/redis-slave-xq3pf 1/1 Running 0 2h NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE svc/frontend 10.254.198.99 <nodes> 80:30001/TCP 1h svc/kubernetes 10.254.0.1 <none> 443/TCP 31d svc/my-nginx 10.254.78.8 <none> 80/TCP 19d svc/redis-master 10.254.211.158 <none> 6379/TCP 3h svc/redis-slave 10.254.160.65 <none> 6379/TCP 2h NAME DESIRED CURRENT READY AGE rc/frontend 3 3 3 2h rc/redis-master 1 1 1 3h rc/redis-slave 2 2 2 2h NAME ENDPOINTS AGE ep/frontend 172.30.1.21:80,172.30.1.22:80,172.30.1.23:80 1h ep/kubernetes 172.16.168.129:6443 31d ep/my-nginx 172.30.1.16:80,172.30.1.9:80 19d ep/redis-master 172.30.1.18:6379 3h ep/redis-slave 172.30.1.19:6379,172.30.1.20:6379 2h ~~~ 這樣我們的redis主從和phpweb就搭建好了 ![](https://box.kancloud.cn/82999f70c328f03b25deae1a3c8c4617_2304x998.png)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看