溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Multiple Ingress controllers(多ingress部署)

發(fā)布時(shí)間:2020-07-24 22:22:30 來(lái)源:網(wǎng)絡(luò) 閱讀:1383 作者:筑夢(mèng)攻城獅 欄目:云計(jì)算

背景:

1、業(yè)務(wù)有個(gè)性化需求,例如需要在nginx 上面部署agent 分析日志并做告警,但該業(yè)務(wù)不關(guān)注其他業(yè)務(wù)的日志

2、每次業(yè)務(wù)變更,nginx worker進(jìn)程都得執(zhí)行reload。隨著業(yè)務(wù)體量增加,reload會(huì)越來(lái)越頻繁,拆分ingress 可以有效避免業(yè)務(wù)互相影響


# 為機(jī)器加上不同的標(biāo)簽,如azone/bzone 用來(lái)區(qū)分A專(zhuān)區(qū)跟B專(zhuān)區(qū)

kubectl label node test-node-1.1.1.1 ingress-role="azone"?

kubectl label node test-node-2.2.2.2 ingress-role="bzone"


# 創(chuàng)建ingress

root@ubuntu:/home/test# kubectl apply -f nginx-ingress-controller-ds-azone.yml?

root@ubuntu:/home/test# kubectl apply -f nginx-ingress-controller-ds-bzone.yml


# 查看部署ingress實(shí)例

root@ubuntu:/home/test# kubectl get pod -n kube-system -o wide |grep nginx?

azone-nginx-ingress-controller-d92zq ? ? ?1/1 ? ? ? Running ? 0 ? ? ? ? ?2m ? ? ? ?10.26.129.21 ? ??test-node-1.1.1.1

bzone-nginx-ingress-controller-dswv9 ? 1/1 ? ? ? Running ? 0 ? ? ? ? ?2m ? ? ? ?10.26.129.22 ? ?test-node-2.2.2.2


# nginx-controller 配置如下

apiVersion: extensions/v1beta1

kind: DaemonSet

metadata:

? name: azone-nginx-ingress-controller

? labels:

? ? app: ingress-nginx

? namespace: kube-system

spec:

? template:

? ? metadata:

? ? ? labels:

? ? ? ? app: ingress-nginx

? ? ? annotations:

? ? ? ? prometheus.io/scrape: "true"

? ? ? ? prometheus.io/port: "10254"

? ? ? ? prometheus.io/type: "ingress-nginx"

? ? spec:

? ? ? hostNetwork: true

? ? ? tolerations:

? ? ? - key: "node-role.kubernetes.io/ingress"

? ? ? ? operator: "Equal"

? ? ? ? value: "true"

? ? ? ? effect: "NoSchedule"

? ? ? nodeSelector:

? ? ? ? node-role.kubernetes.io/ingress: "true"

? ? ? ? ingress-role: "azone"? ? ? ? ? ? ? ? ? ? ? ? # 添加指定標(biāo)簽,綁定固定部署機(jī)器

? ? ? serviceAccountName: admin

? ? ? containers:

? ? ? ? - name: azone-nginx-ingress-controller

? ? ? ? ? image: registry.cn-hangzhou.aliyuncs.com/test/ingress-controller:0.15.0-10

? ? ? ? ? args:

? ? ? ? ? ? - /nginx-ingress-controller

? ? ? ? ? ? - --default-backend-service=$(POD_NAMESPACE)/default-http-backend

? ? ? ? ? ? - --configmap=$(POD_NAMESPACE)/nginx-configuration

? ? ? ? ? ? - --tcp-services-configmap=$(POD_NAMESPACE)/tcp-services

? ? ? ? ? ? - --udp-services-configmap=$(POD_NAMESPACE)/udp-services

? ? ? ? ? ? - --publish-service=$(POD_NAMESPACE)/ingress-nginx

? ? ? ? ? ? - --annotations-prefix=nginx.ingress.kubernetes.io

? ? ? ? ? ? - --v=2

? ? ? ? ? ? - --enable-dynamic-configuration=true

? ? ? ? ? ? - --ingress-class=azone? ? ? ? ? ? ? ? # 指定ingress-class 屬性

? ? ? ? ? env:

? ? ? ? ? ? - name: POD_NAME

? ? ? ? ? ? ? valueFrom:

? ? ? ? ? ? ? ? fieldRef:

? ? ? ? ? ? ? ? ? fieldPath: metadata.name

? ? ? ? ? ? - name: COLLECT_LOG_DOCKER_DATA_WEBLOG

? ? ? ? ? ? ? value: "true"

? ? ? ? ? ? - name: POD_NAMESPACE

? ? ? ? ? ? ? valueFrom:

? ? ? ? ? ? ? ? fieldRef:

? ? ? ? ? ? ? ? ? fieldPath: metadata.namespace

? ? ? ? ? ports:

? ? ? ? ? - name: http

? ? ? ? ? ? containerPort: 80

? ? ? ? ? - name: https

? ? ? ? ? ? containerPort: 443

??

? ? ? ? ? volumeMounts:

? ? ? ? ? - name: localtime-config

? ? ? ? ? ? mountPath: /etc/localtime

? ? ? ? ? livenessProbe:

? ? ? ? ? ? failureThreshold: 3

? ? ? ? ? ? httpGet:

? ? ? ? ? ? ? path: /healthz

? ? ? ? ? ? ? port: 10254

? ? ? ? ? ? ? scheme: HTTP

? ? ? ? ? ? initialDelaySeconds: 10

? ? ? ? ? ? periodSeconds: 10

? ? ? ? ? ? successThreshold: 1

? ? ? ? ? ? timeoutSeconds: 1

? ? ? ? ? readinessProbe:

? ? ? ? ? ? failureThreshold: 3

? ? ? ? ? ? httpGet:

? ? ? ? ? ? ? path: /healthz

? ? ? ? ? ? ? port: 10254

? ? ? ? ? ? ? scheme: HTTP

? ? ? ? ? ? periodSeconds: 10

? ? ? ? ? ? successThreshold: 1

? ? ? ? ? ? timeoutSeconds: 1

? ? ? volumes:

? ? ? ? - name: localtime-config

? ? ? ? ? hostPath:

? ? ? ? ? ? path: /etc/localtime



# 創(chuàng)建 ingress,配置里面綁定class

root@ubuntu:/home/test# cat azone-test.aaa.com-ingress.yml

apiVersion: extensions/v1beta1

kind: Ingress

metadata:

? name: azone-test-ingress-https

? annotations:

? ? kubernetes.io/ingress.class: "azone"? ? ? ? ? ? ? ? ? ? # 綁定ingress-class

? ? nginx.ingress.kubernetes.io/ssl-redirect: "false"

spec:

? rules:

? - host: azone-test.aaa.com

? ? http:

? ? ? paths:

? ? ? - path: /

? ? ? ? backend:

? ? ? ? ? serviceName: azone-test-svc

? ? ? ? ? servicePort: 80


# 查看綁定情況

root@ubuntu:/home/wuguihong1# kubectl -n kube-system get pod -o wide|grep nginx

azone-ingress-controller-d92zq? ? 1/1? ? ? ?Running? ?0? ? ? ? ? 16h? ? ? ?10.26.129.21? ? test-node-1.1.1.1

bzone-ingress-controller-62458? ?1/1? ? ? ?Running? ?0? ? ? ? ? 15h? ? ? ?10.26.129.22? ? test-node-2.2.2.2



root@ubuntu:/home/test# kubectl -n kube-system exec? azone-ingress-controller-d92zq cat /etc/nginx/nginx.conf |grep azone-test.aaa.com

server_name azone-test.aaa.com ;


root@ubuntu:/home/test# kubectl -n kube-system exec bzone-ingress-controller-62458? cat /etc/nginx/nginx.conf|grep azone-test.aaa.com


可以看到2臺(tái)node節(jié)點(diǎn)上各運(yùn)行一個(gè)ingress-controller , 并且azone 上面綁定了azone-test.aaa.com 的域名,而bzone 上面沒(méi)綁定


參考資料:

Multiple Ingress controllers

https://kubernetes.github.io/ingress-nginx/user-guide/multiple-ingress/


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI