iT邦幫忙

2021 iThome 鐵人賽

DAY 27
1
自我挑戰組

30天走入亞洲雲端黑馬阿里雲系列 第 27

Day 27 阿里雲上運行Kubernetes 3 - ACK

  • 分享至 

  • xImage
  •  

在前兩篇簡單操作了阿里上面的ACK服務,今天要分享的是使用ingress,怎麼用一個IP去分享多個服務出去,讓使用更加方便

Ingress

使用Service和Ingress都將Kubernetes集群內的多個服務公開給外部客戶端。其關鍵在於IP地址,如果使用 Service,每個Kubernetes服務都需要一個獨立的IP地址,但在使用Ingress時,只要用一個公共IP地址就能將Kubernetes集群內的多個服務公開給外部客戶端

https://ithelp.ithome.com.tw/upload/images/20211009/20140353W4xNff6SUj.png

實作2-ACK Ingress

一樣要先創建集群,參考(DAY25)的操作範例,唯一不一樣的地方要在第一頁額外去勾選EIP連接點
https://ithelp.ithome.com.tw/upload/images/20211009/20140353GsNXf2qeq9.png

  1. 我們配置兩個ReplicaSet,我們先建立nginx的yaml
vim nginx.yaml
apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.12.2
  1. 建立tomcat的yaml
vim tomcat.yaml
apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: tomcat
spec:
  replicas: 2
  selector:
    matchLabels:
      app: tomcat
  template:
    metadata:
      labels:
        app: tomcat
    spec:
      containers:
      - name: tomcat
        image: tomcat:8.5
  1. 創建ReplicaSet
kubectl create -f nginx.yaml
kubectl create -f tomcat.yaml

https://ithelp.ithome.com.tw/upload/images/20211009/20140353HclOFqEUzq.png
4. 創建nginx的yaml

vim nginx-serivce.yaml
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  ports:
  - port: 81
    targetPort: 80
  selector:
    app: nginx
  1. 創建tomcat的yaml
vim tomcat-serivce.yaml
apiVersion: v1
kind: Service
metadata:
  name: tomcat-service
spec:
  ports:
  - port: 82
    targetPort: 8080
  selector:
    app: tomcat
  1. 建立service
kubectl create -f nginx-serivce.yaml
kubectl create -f tomcat-serivce.yaml

https://ithelp.ithome.com.tw/upload/images/20211009/2014035316sLfQ14kE.png
7. 檢查一下pod是否正常

kubectl get pods

https://ithelp.ithome.com.tw/upload/images/20211009/20140353ap3pQCi8Q9.png
8. 再來我們要建立Ingress,根據域名來訪問這些服務

vim ingress.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress
spec:
  rules:
  - host: nginx.a.com
    http:
      paths:
      - path: /
        backend:
          serviceName: nginx-service
          servicePort: 81
  - host: tomcat.b.com
    http:
      paths:
      - path: /
        backend:
          serviceName: tomcat-service
          servicePort: 82
  1. 創建ingress
kubectl create -f ingress.yaml

https://ithelp.ithome.com.tw/upload/images/20211009/20140353Yo2a8QT4Fc.png

  1. 查看一下ingress,我們可以看到剛剛寫的域名已經上去
kubectl get ingress

https://ithelp.ithome.com.tw/upload/images/20211009/20140353v2MZuG35lG.png

  1. 打開伺服器的hosts文件,新增剛剛我們在ingress查看的域名跟IP
vim /etc/hosts

https://ithelp.ithome.com.tw/upload/images/20211009/20140353OL9mbNjv5q.png

  1. 輸入curl查看一下即可
curl nginx.a.com
curl tomcat.b.com

https://ithelp.ithome.com.tw/upload/images/20211009/201403531K8fSHkZe3.png
https://ithelp.ithome.com.tw/upload/images/20211009/201403533v3ne27R0q.png

這樣就完成了透過同一IP去輸出兩個網站,後面如果要刪除資源,可以依照(DAY26)後面的分享去刪除,可以依照這簡單lab再去做變化,就可以得到更深的了解


上一篇
Day 26 阿里雲上運行Kubernetes 2 - ACK
下一篇
Day 28 數據可視化DataV-1
系列文
30天走入亞洲雲端黑馬阿里雲30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言