1. 程式人生 > >在kubernetes集群中運行nginx

在kubernetes集群中運行nginx

map 部署 nfs服務器 重啟nginx access ntp 9.png 測試 off

在完成前面kubernetes數據持久化的學習之後,本節我們開始嘗試在k8s集群中部署nginx應用,對於nginx來說,需要持久化的數據主要有兩塊:
1、nginx配置文件和日誌文件
2、網頁文件

一、配置nginx網頁文件持久化
1、ReplicationController配置文件如下

# cat nginx-rc.yaml 
apiVersion: v1
kind: ReplicationController
metadata:
  name: nginx-test
  labels:
    name: nginx-test
spec:
  replicas: 2
  selector:
    name: nginx-test
  template:
    metadata:
      labels: 
       name: nginx-test
    spec:
      containers:
      - name: nginx-test
        image: docker.io/nginx
        volumeMounts:
        - mountPath: /usr/share/nginx/html
          name: nginx-data
        ports:
        - containerPort: 80
      volumes:
      - name: nginx-data
        persistentVolumeClaim:
          claimName: nfs-data

2、sevice配置文件如下

# cat nginx-svc.yaml 
apiVersion: v1
kind: Service
metadata:
  name: nginx-test
  labels: 
   name: nginx-test
spec:
  type: NodePort
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
    name: http
    nodePort: 30088
  selector:
name: nginx-test

3、通過配置文件創建ReplicationController和service

# kubectl create -f nginx-rc.yaml
# kubectl create -f nginx-svc.yaml 

技術分享圖片
技術分享圖片
4、在nfs服務器上創建測試html文件

# echo ‘Hello, Welcome to my website...‘ > /home/index.html

技術分享圖片
技術分享圖片
二、配置nginx配置文件持久化
我們需要在前面網頁文件持久化的基礎上把nginx配置文件和日誌文件也進行持久化
1、創建PVC,其中nfs-data存儲網頁文件,nfs-nginx-etc存儲配置文件和日誌文件
技術分享圖片
技術分享圖片
2、修改nginx-rc.yaml配置文件,掛載兩個pvc

# cat nginx-rc.yaml 
apiVersion: v1
kind: ReplicationController
metadata:
  name: nginx-test
  labels:
    name: nginx-test
spec:
  replicas: 2
  selector:
    name: nginx-test
  template:
    metadata:
      labels: 
       name: nginx-test
    spec:
      containers:
      - name: nginx-test
        image: docker.io/nginx
        volumeMounts:
        - mountPath: /usr/share/nginx/html
          name: nginx-data
        - mountPath: /etc/nginx
          name: nginx-etc
        ports:
        - containerPort: 80
      volumes:
      - name: nginx-data
        persistentVolumeClaim:
         claimName: nfs-data
      - name: nginx-etc
        persistentVolumeClaim:
         claimName: nfs-nginx-etc

3、重新創建rc驗證兩個PVC是否成功掛載

# kubectl delete -f nginx-rc.yaml
# kubectl create -f nginx-rc.yaml
# kubectl get pod
# kubectl describe pod nginx-test-kllfw

技術分享圖片
通過在對應的node節點上inspect docker容器驗證
技術分享圖片
4、通過訪問網頁,發現nginx的server_token為開啟狀態
技術分享圖片
5、這裏我們通過修改error_log和access_log到nfs路徑下,同時將server_token修改為off
技術分享圖片
6、重啟nginx使配置文件
通過將rc的副本數重新設置為0後,再將副本數設置為2,達到重啟nginx的效果。
當然這裏也可以通過kubectl exec的方式進行。
技術分享圖片
7、驗證
驗證server_token已經成功關閉
技術分享圖片
驗證在nfs server上能看到nginx的訪問日誌,證明配置文件修改成功。
技術分享圖片
在生產環境中,nginx服務的發布需要考慮使用ingress,nginx配置文件應當首先考慮使用configmap來實現。

在kubernetes集群中運行nginx