k8s之Ingress 實現 http 代理訪問


前提:

1、服務器已經運行了 ingress-controller 服務

2、測試用 Nginx 鏡像已經上傳到倉庫(方便測試用,也可忽略)

一、查看運行環境是否正常

[root@k8s-master ingress]# kubectl get pods -n ingress-nginx
NAME                                        READY   STATUS    RESTARTS   AGE
default-http-backend-5c9bb94849-snbm7       1/1     Running   0          19h
nginx-ingress-controller-84d5b54fdf-hrx7p   1/1     Running   0          19h
[root@k8s-master ingress]# kubectl get svc -n ingress-nginx
NAME                   TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                      AGE
default-http-backend   ClusterIP   10.103.169.169   <none>        80/TCP                       19h
ingress-nginx          NodePort    10.107.203.11    <none>        80:32080/TCP,443:32443/TCP   18h
[root@k8s-master ingress]# 

 

 

 

 

二、搭建 test-v1 服務

書寫一個 test-v1.yaml 配置文件,用於發布服務

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nginx-v1
spec:
  replicas: 2
  template:
    metadata:
      labels:
        name: nginx
    spec:
      containers:
      - name: nginx
        image: registry.cn-hangzhou.aliyuncs.com/wangzy001/nginx:v1  #提前在阿里雲准備好的測試鏡像
        imagePullPolicy: IfNotPresent #拉取策略
        ports:
        - containerPort: 80
---
apiVersion: v1
kind: Service
metadata: 
  name: test-v1
spec:
  ports:
    - port: 80
      targetPort: 80
      protocol: TCP
  selector:
    name: nginx

發布 test-v1 服務並檢查

# 1、書寫並運行資源配置文件
[root@k8s-master ingress]# vi test-v1.yml [root@k8s-master ingress]# kubectl apply -f test-v1.yml deployment.extensions/nginx-v1 created service/test-v1 created

# 2、查看 Service 服務 [root@k8s
-master ingress]# kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 9d test-v1 ClusterIP 10.106.123.237 <none> 80/TCP 12s

# 3、訪問測試頁面 [root@k8s
-master ingress]# curl 10.106.123.237 Hello wangzy! This is v1 version

 

二、搭建 test-v2 服務

1、直接復制 test-v1.yml 配置文件,並修改內容(也可自己重新書寫)

[root@k8s-master ingress]# cp test-v1.yml test-v2.yml 
[root@k8s-master ingress]# vi test-v2.yml 

修改內容如下

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nginx-v2
spec:
  replicas: 2
  template:
    metadata:
      labels:
        name: nginx-version2
    spec:
      containers:
      - name: nginx-version
        image: registry.cn-hangzhou.aliyuncs.com/wangzy001/nginx:v2  #提前在阿里雲准備好的測試鏡像
        imagePullPolicy: IfNotPresent 
        ports:
        - containerPort: 80
---
apiVersion: v1
kind: Service
metadata: 
  name: test-v2
spec:
  ports:
    - port: 80
      targetPort: 80
      protocol: TCP
  selector:
    name: nginx-version2 

發布 test-v2 服務並檢查

# 1、運行資源配置文件
[root@k8s-master ingress]# kubectl apply -f test-v2.yml deployment.extensions/nginx-v2 created service/test-v2 created

# 2、查看 Service 服務 [root@k8s
-master ingress]# kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 9d test-v1 ClusterIP 10.106.123.237 <none> 80/TCP 9m32s test-v2 ClusterIP 10.109.40.7 <none> 80/TCP 7s

# 訪問測試頁面 [root@k8s
-master ingress]# curl 10.109.40.7 Hello wangzy! This is v2 version [root@k8s-master ingress]#

 

三、書寫 Ingress 文件,將兩個 Service 服務進行代理

配置文件內容如下(也可合並)

apiVersion: extensions/v1beta1
kind: Ingress
metadata: 
  name: test-nginxv1
spec:
  rules:
   - host: www1.wangzy.com
     http:
       paths:
       - path: /
         backend:
           serviceName: test-v1
           servicePort: 80
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata: 
  name: test-nginxv2
spec:
  rules:
   - host: www2.wangzy.com
     http:
       paths:
       - path: /
         backend:
           serviceName: test-v2
           servicePort: 80

操作步驟

# 1、創建文件並運行
[root@k8s-master ingress]# vi ingress-http.yml [root@k8s-master ingress]# kubectl apply -f ingress-http.yml ingress.extensions/test-nginxv1 created ingress.extensions/test-nginxv2 created

# 2、查看 Pod 運行情況 [root@k8s
-master ingress]# kubectl get pods NAME READY STATUS RESTARTS AGE nginx-v1-bb59cf44c-72qmn 1/1 Running 0 17m nginx-v1-bb59cf44c-jw8pb 1/1 Running 0 17m nginx-v2-b478c44b4-mfb5j 1/1 Running 0 8m34s nginx-v2-b478c44b4-z2nqf 1/1 Running 0 8m34s
# 3、查看 Ingress 信息
[root@k8s-master ingress]# kubectl get ingress NAME HOSTS ADDRESS PORTS AGE test-nginxv1 www1.wangzy.com 80 12m test-nginxv2 www2.wangzy.com 80 12m [root@k8s-master ingress]#
# 4、查看訪問信息
[root@k8s-master ingress]# kubectl get svc -n ingress-nginx NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE default-http-backend ClusterIP 10.103.169.169 <none> 80/TCP 19h ingress-nginx NodePort 10.107.203.11 <none> 80:32080/TCP,443:32443/TCP 18h [root@k8s-master ingress]#

 

四、修改本地 Host 文件

# 目錄位置:C:\Windows\System32\drivers\etc
部署服務對應IP www1.wangzy.com
部署服務對應IP www2.wangzy.com 

五、訪問頁面測試

頁面一

 

 

 頁面二

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM