如何使用daemonset+hostport實(shí)現(xiàn)類(lèi)ingress的負(fù)載均衡服務(wù)

如何使用daemonset+hostport實(shí)現(xiàn)類(lèi)ingress的負(fù)載均衡服務(wù),針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。

創(chuàng)新互聯(lián)網(wǎng)站建設(shè)提供從項(xiàng)目策劃、軟件開(kāi)發(fā),軟件安全維護(hù)、網(wǎng)站優(yōu)化(SEO)、網(wǎng)站分析、效果評(píng)估等整套的建站服務(wù),主營(yíng)業(yè)務(wù)為做網(wǎng)站、網(wǎng)站設(shè)計(jì),App定制開(kāi)發(fā)以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專(zhuān)業(yè)、用心的態(tài)度為用戶(hù)提供真誠(chéng)的服務(wù)。創(chuàng)新互聯(lián)深信只要達(dá)到每一位用戶(hù)的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

在kubernetes環(huán)境中,現(xiàn)如今我們對(duì)外提供服務(wù)我們使用較多的是ingress方案。但對(duì)于很多已經(jīng)長(zhǎng)期使用nginx作為反向代理的用戶(hù)而言,要將復(fù)雜的配置遷移到nginx ingress上顯然非常麻煩。

所以,對(duì)于更廣大的用戶(hù)而言,將nginx的配置信息直接移植到鏡像中,然后通過(guò)良好的版本管理來(lái)進(jìn)行滾動(dòng)迭代發(fā)布。這樣就彌補(bǔ)了相比較于ingress每次更新都要手動(dòng)做鏡像再進(jìn)行發(fā)布的劣勢(shì),反而體現(xiàn)了版本管理的優(yōu)勢(shì)。

同時(shí),借鑒各廠商ingress controller的解決方案,daemonset+hostport能夠保證請(qǐng)求更快更直接的發(fā)送到對(duì)應(yīng)的反向代理,從而提高吞吐效率。

接下來(lái)我們介紹下如何使用daemonset+hostport實(shí)現(xiàn)類(lèi)ingress的負(fù)載均衡服務(wù)。

1.測(cè)試站點(diǎn):

首先我們做兩個(gè)鏡像,訪問(wèn)直接返回foo1,以及foo2

2.發(fā)布測(cè)試站點(diǎn):

foo1-pod.yaml

apiVersion: v1
kind: Pod
metadata:
  name: mytest-site-foo1
  labels:
    app: mytest-site-foo1
spec:
  containers:
  - name: mytest-site-foo1
    image: 192.168.1.242:5000/mytest-site-foo1

foo1-svc.yaml

apiVersion: v1
kind: Service
metadata:
  name: mytest-site-foo1-svc
  labels:
    app: mytest-site-foo1-svc
spec:
  selector:
    app: mytest-site-foo1
  type: ClusterIP
  ports:
    - protocol: TCP
      port: 8009
      targetPort: 80

再進(jìn)行發(fā)布 kubectl apply -f foo1-pod.yaml;kubectl apply -f foo1-svc.yaml

按照上面的文件再寫(xiě)foo2-pod.yaml,foo2-svc.yaml,并進(jìn)行發(fā)布。

2.制作前端nginx鏡像:

nginx的配置文件default.conf:

server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;
    access_log  /var/log/nginx/host.access.log  main;

    location /foo1 {
	proxy_pass http://mytest-site-foo1-svc:8009/;
    }
    location /foo2 {
	proxy_pass http://mytest-site-foo2-svc:8009/;
    }
    location / {
	root /var/www/html;
    }
}

再編寫(xiě)dockerfile(當(dāng)然如果配置文件多可以做成目錄一并添加到nginx鏡像中):

FROM nginx:latest
ADD default.conf /etc/nginx/conf.d/
ENTRYPOINT nginx -c /etc/nginx/nginx.conf && tail -f /dev/null

創(chuàng)建鏡像并上傳到registry:

制作鏡像:docker build -t mytest-site-nginx .

打tag:docker tag mytest-site-nginx 192.168.1.244:5000/mytest-site-nginx

上傳:docker push 192.168.1.244:5000/mytest-site-nginx

3.發(fā)布nginx

有了對(duì)應(yīng)的鏡像,我們就能將nginx以daemonset的方式發(fā)布到各個(gè)節(jié)點(diǎn)。

mytest-site-nginx-ds.yaml:

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: mytest-site-nginx-ds
  labels:
    app: mytest-site-nginx-ds
spec:
  template:
    metadata:
      labels:
        app: mytest-site-nginx-ds
    spec:
      containers:
      - name: mytest-site-nginx
        image: 192.168.1.242:5000/mytest-site-nginx:latest
        ports:
        - name: http
          hostPort: 80
          protocol: TCP
          containerPort: 80
  selector:
    matchLabels:
      app: mytest-site-nginx-ds

kubectl apply -f mytest-site-nginx-ds.yaml

接下來(lái)我們就能用http協(xié)議訪問(wèn)各個(gè)節(jié)點(diǎn)/foo1以及/foo2來(lái)訪問(wèn)后端實(shí)際運(yùn)行的網(wǎng)站。

4.如何更新

首先將我們的dockerfile以及配置文件放置到gitlab上。

發(fā)布時(shí)實(shí)現(xiàn):

下載配置代碼->構(gòu)建鏡像->上傳鏡像->kubectl set image進(jìn)行發(fā)布。

同時(shí)可以利用git的版本tag或者kubernetes的roll back進(jìn)行版本回滾。

關(guān)于如何使用daemonset+hostport實(shí)現(xiàn)類(lèi)ingress的負(fù)載均衡服務(wù)問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

網(wǎng)站標(biāo)題:如何使用daemonset+hostport實(shí)現(xiàn)類(lèi)ingress的負(fù)載均衡服務(wù)
轉(zhuǎn)載來(lái)于:http://muchs.cn/article4/jsojoe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶(hù)體驗(yàn)、軟件開(kāi)發(fā)小程序開(kāi)發(fā)、品牌網(wǎng)站制作、商城網(wǎng)站、網(wǎng)站營(yíng)銷(xiāo)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

綿陽(yáng)服務(wù)器托管