您好,登錄后才能下訂單哦!
背景:
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/
免責(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)容。