温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何使用daemonset+hostport实现类ingress的负载均衡服务

发布时间:2022-01-05 09:28:36 来源:亿速云 阅读:315 作者:柒染 栏目:云计算

如何使用daemonset+hostport实现类ingress的负载均衡服务,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

在kubernetes环境中,现如今我们对外提供服务我们使用较多的是ingress方案。但对于很多已经长期使用nginx作为反向代理的用户而言,要将复杂的配置迁移到nginx ingress上显然非常麻烦。

所以,对于更广大的用户而言,将nginx的配置信息直接移植到镜像中,然后通过良好的版本管理来进行滚动迭代发布。这样就弥补了相比较于ingress每次更新都要手动做镜像再进行发布的劣势,反而体现了版本管理的优势。

同时,借鉴各厂商ingress controller的解决方案,daemonset+hostport能够保证请求更快更直接的发送到对应的反向代理,从而提高吞吐效率。

接下来我们介绍下如何使用daemonset+hostport实现类ingress的负载均衡服务。

1.测试站点:

首先我们做两个镜像,访问直接返回foo1,以及foo2

2.发布测试站点:

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

再进行发布 kubectl apply -f foo1-pod.yaml;kubectl apply -f foo1-svc.yaml

按照上面的文件再写foo2-pod.yaml,foo2-svc.yaml,并进行发布。

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;     } }

再编写dockerfile(当然如果配置文件多可以做成目录一并添加到nginx镜像中):

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

创建镜像并上传到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.发布nginx

有了对应的镜像,我们就能将nginx以daemonset的方式发布到各个节点。

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

接下来我们就能用http协议访问各个节点/foo1以及/foo2来访问后端实际运行的网站。

4.如何更新

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

发布时实现:

下载配置代码->构建镜像->上传镜像->kubectl set image进行发布。

同时可以利用git的版本tag或者kubernetes的roll back进行版本回滚。

关于如何使用daemonset+hostport实现类ingress的负载均衡服务问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI