關於k8s部署php鏡像實例

小云云
發布: 2023-03-21 06:16:02
原創
4229 人瀏覽過

之前寫了 製作php+nginx環境鏡像 ,製作了一個php鏡像。本文主要和大家分享關於k8s部署php鏡像實例,希望能幫助大家。

那麼要如何使用這個鏡像呢?

1.可以直接用docker來執行這個容器

docker run --rm -d --name php -p 80:80 -v /tmp:/app
登入後複製
登入後複製

docker指令解釋:

–rm : 防止docker產生tag為none的的鏡像

-d : 使得產生的container在後台運行

–name : 指定該container 名稱稱為php ,方便之後操作

-p :指定連接埠第一個80為宿主機的連接埠號,第二個80為container的連接埠號碼
   第一個端口號可以是你的宿主機的任何可用端口,可以用localhost:端口號進行訪問。

-v : v是volume的縮寫,即將宿主機的磁碟區掛載到container中
   第一個/tmp指的是宿主機中的path路徑
第二個/app是container的path路徑

由於基礎映像webdevops/php-nginx:centos-7-php56中配置的nginx root路徑為/app,所以此處指定為/app
在/tmp中新增檔案index.php
內容為:

<? phpinfo() ?>
登入後複製
登入後複製

啟動容器後即可存取宿主機位址+連接埠號,如curl localhost:連接埠號,即會傳回phpinfo

#在webdevops/php-nginx映像檔中即可看到設定檔的路徑
此處生效的nginx設定檔路徑是:/opt/docker/etc/nginx/vhost.conf
在該配置文件中可以看到監聽80埠的設定root路徑為/app
可以修改該路徑

#2.使用k8s部署
將映像上傳至倉庫
docker push image_name

新deployment 設定檔:php-deployment.yaml

deployment.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: php
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: php
    spec:
      containers:
      - name: php        image: image_address
        ports:
        - containerPort: 80        volumeMounts:
        - mountPath: /app          name: php-volume
      volumes:
      - name: php-volume        hostPath:
          path: /tmp
登入後複製
登入後複製

新建php-service.yaml檔案

kind: Service
apiVersion: v1
metadata:
  name: php-service  namespace: default
  labels:
    app: php
spec:
  ports:
  - name: listener
    protocol: TCP
    port: 80
    targetPort: 80
  selector:
    app: php  type: LoadBalancer
  externalIPs:
    - your ip address
登入後複製
登入後複製

執行指令:

kubectl apply -f php-deployment.yaml
kubectl apply -f php-service.yaml
登入後複製
登入後複製

可透過以下指令查看

kubectl get deployment
kubectl get service
登入後複製
登入後複製

之後可以透過存取你的宿主機ip來取得phpinfo
當然你的k8s叢集中執行php容器節點的/tmp路徑下需要有index.php這個文件
至於是哪個節點運行了這個容器可以透過kubecel get pods php來查看

#之前寫了製作php+nginx環境映像
製作了一個php鏡像。

那麼要如何使用這個鏡像呢?

1.可以直接用docker來執行這個容器

docker run --rm -d --name php -p 80:80 -v /tmp:/app
登入後複製
登入後複製

docker指令解釋:

–rm : 防止docker產生tag為none的的鏡像

-d : 使得產生的container在後台運行

–name : 指定該container 名稱稱為php ,方便之後操作

-p :指定連接埠第一個80為宿主機的連接埠號,第二個80為container的連接埠號碼
   第一個端口號可以是你的宿主機的任何可用端口,可以用localhost:端口號進行訪問。

-v : v是volume的縮寫,即將宿主機的磁碟區掛載到container中
   第一個/tmp指的是宿主機中的path路徑
第二個/app是container的path路徑

由於基礎映像webdevops/php-nginx:centos-7-php56中配置的nginx root路徑為/app,所以此處指定為/app
在/tmp中新增檔案index.php
內容為:

<? phpinfo() ?>
登入後複製
登入後複製

啟動容器後即可存取宿主機位址+連接埠號,如curl localhost:連接埠號,即會傳回phpinfo

#在webdevops/php-nginx映像檔中即可看到設定檔的路徑
此處生效的nginx設定檔路徑是:/opt/docker/etc/nginx/vhost.conf
在該配置文件中可以看到監聽80埠的設定root路徑為/app
可以修改該路徑

#2.使用k8s部署
將映像上傳至倉庫
docker push image_name

新deployment 設定檔:php-deployment.yaml

deployment.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: php
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: php
    spec:
      containers:
      - name: php        image: image_address
        ports:
        - containerPort: 80        volumeMounts:
        - mountPath: /app          name: php-volume
      volumes:
      - name: php-volume        hostPath:
          path: /tmp
登入後複製
登入後複製

新建php-service.yaml檔案

kind: Service
apiVersion: v1
metadata:
  name: php-service  namespace: default
  labels:
    app: php
spec:
  ports:
  - name: listener
    protocol: TCP
    port: 80
    targetPort: 80
  selector:
    app: php  type: LoadBalancer
  externalIPs:
    - your ip address
登入後複製
登入後複製

執行指令:

kubectl apply -f php-deployment.yaml
kubectl apply -f php-service.yaml
登入後複製
登入後複製

可透過以下指令查看

kubectl get deployment
kubectl get service
登入後複製
登入後複製

之後可以透過存取你的宿主機ip來取得phpinfo
當然你的k8s叢集中執行php容器節點的/tmp路徑下需要有index.php這個文件
至於是哪個節點運行了這個容器可以透過kubecel get pods php來查看。

相關推薦:

如何使用Docker部署PHP開發環境

linux下如何部署php專案?

Linux下部署php多重版本共存

以上是關於k8s部署php鏡像實例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!