ingress是一個管理kubernetes集群南北流量(集群外部到內(nèi)部)的api對象牍氛,典型的有HTTP。并且可以提供:LB負(fù)載均衡的能力锰茉。
Ingress Controller是一種能讀懂ingress配置桩撮,并將其翻譯成自己配置文件的應(yīng)用程序键兜。
一、Ingress nginx部署:
網(wǎng)上有的鏈接無法下載既琴,找到目前可以下載
wget https://github.com/kubernetes/ingress-nginx/blob/nginx-0.26.1/deploy/static/mandatory.yaml
里面的image你懂的無法下載朝扼,改為阿里云的image:registry.aliyuncs.com/google_containers/nginx-ingress-controller:0.26.1
啟動配置清單kubectl apply -f mandatory.yaml
namespace/ingress-nginx created
configmap/nginx-configuration created
。以舒。怔接。。稀轨。
查看pod是否運(yùn)行
kubectl get pods -n ingress-nginx
NAME? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? READY? STATUS? ? ? ? ? ? ? RESTARTS? AGE
nginx-ingress-controller-7fb85bc8bb-nxcq6? 0/1? ? ContainerCreating? 0
二扼脐、創(chuàng)建nginx-ingress-service.yaml文件
apiVersion: v1
kind: Service
metadata:
? name: nginx-ingress-controller
? namespace: ingress-nginx
spec:
? type: NodePort
? ports:
? ? - port: 80? ?
? ? ? name: http
? ? ? nodePort: 30080??
? ? - port: 443
? ? ? name: https
? ? ? nodePort: 30443
? selector:
? ? app.kubernetes.io/name: ingress-nginx
? ? app.kubernetes.io/part-of: ingress-nginx
此時(shí)基于nodeport型的nginx- ingress-controller的service創(chuàng)建成功
kubectl get svc -n ingress-nginx
NAME? ? ? ? ? ? ? ? ? ? ? TYPE? ? ? CLUSTER-IP? ? ? EXTERNAL-IP? PORT(S)? ? ? ? ? ? ? ? ? ? ? AGE
nginx-ingress-controller? NodePort? 10.98.170.206? <none>? ? ? ? 80:30080/TCP
三、定義后端分組service:myapp-svc
apiVersion: v1
kind: Service
metadata:
? name: myapp-svc
? namespace: default
spec:
? selector:
? ? app: myapp
? ? release: beta
? clusterIP: "None"
? ports:
? - port: 80
? ? targetPort: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
? name: myapp-deploy
? namespace: default
spec:
? replicas: 2
? selector:
? ? matchLabels:
? ? ? app: myapp
? ? ? release: beta
? template:
? ? metadata:
? ? ? labels:
? ? ? ? app: myapp
? ? ? ? release: canary
? ? spec:
? ? ? containers:
? ? ? - name: myapp
? ? ? ? image: ikubernetes/myapp:v1
? ? ? ? ports:
? ? ? ? - name: http
? ? ? ? ? containerPort: 80
kubectl apply -f myapp-svc-headless.yaml
kubectl get svc 查詢創(chuàng)建信息
四奋刽、通過Ingress把myapp-svc發(fā)布出去
cat ingress-myapp.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
? name: ingress-myapp
? namespace: default
? annotations:
? ? kubernetes.io/ingress.class: "nginx"
spec:
? rules:
? - host: my.jiang.com
? ? http:
? ? ? paths:
? ? ? - path:
? ? ? ? backend:
? ? ? ? ? serviceName: myapp-svc
? ? ? ? ? servicePort: 80
namespace要和deployment和要發(fā)布的service處于同一個名稱空間
host:表示訪問這個域名,就會轉(zhuǎn)發(fā)到后端myapp-deploy管理的pod上
kubectl apply -f ingress-myapp.yaml
kubectl get ingress查詢信息
在主機(jī)上創(chuàng)建hosts記錄
my.jiang.com? 192.168.X.X
用curl my.jiang.com:30080可以看到網(wǎng)站信息