Kubernetes之六 k8s中的ingress和ingress controller

ingress是一個(gè)管理kubernetes集群南北流量(集群外部到內(nèi)部)的api對(duì)象,典型的有HTTP。并且可以提供:LB負(fù)載均衡的能力。

Ingress Controller是一種能讀懂ingress配置,并將其翻譯成自己配置文件的應(yīng)用程序。


第一個(gè)service起到的作用是:引入外部流量,也可以用DaemonSet控制器的方式讓Pod共享節(jié)點(diǎn)網(wǎng)絡(luò),第二個(gè)service的作用是:對(duì)后端pod分組,不被調(diào)度時(shí)使用,如果后端pod發(fā)生變動(dòng),則ingress就會(huì)將變動(dòng)信息注入到,ingress controller管理的7層負(fù)載nginx的配置文件中.


一、Ingress nginx部署:

網(wǎng)上有的鏈接無(wú)法下載,找到目前可以下載

wget https://github.com/kubernetes/ingress-nginx/blob/nginx-0.26.1/deploy/static/mandatory.yaml

里面的image你懂的無(wú)法下載,改為阿里云的image:registry.aliyuncs.com/google_containers/nginx-ingress-controller:0.26.1

啟動(dòng)配置清單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)建信息

四、通過(guò)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處于同一個(gè)名稱空間

host:表示訪問(wèn)這個(gè)域名,就會(huì)轉(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)站信息

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容