千家信息网

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

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,如何使用daemonset+hostport实现类ingress的负载均衡服务,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。在kub
千家信息网最后更新 2025年02月01日如何使用daemonset+hostport实现类ingress的负载均衡服务

如何使用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: v1kind: Podmetadata:  name: mytest-site-foo1  labels:    app: mytest-site-foo1spec:  containers:  - name: mytest-site-foo1    image: 192.168.1.242:5000/mytest-site-foo1

foo1-svc.yaml

apiVersion: v1kind: Servicemetadata:  name: mytest-site-foo1-svc  labels:    app: mytest-site-foo1-svcspec:  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:latestADD 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/v1kind: DaemonSetmetadata:  name: mytest-site-nginx-ds  labels:    app: mytest-site-nginx-dsspec:  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的负载均衡服务问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

镜像 配置 服务 文件 版本 均衡 问题 接下来 同时 方案 更多 用户 站点 节点 代理 制作 帮助 更新 测试 管理 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 福建专升本数据库ppt陈 华为杯网络技术比赛 华为数据库工程师 网络安全指网络什么的安全 区块链的信息存在什么数据库中 亳州电商平台软件开发 禁闭求生为什么进不去人家服务器 陕西语音网络技术服务设计 csgo 查看服务器 网络技术要不要写编程 徐汇区银联数据库服务商清单 软件开发企业属于什么产业 数据库应用技术a卷 怎么统计系统数据库数量 网络安全和法律专业就业前景 了解samba服务器功能 网络安全和信息安全评测 网络安全博览会什么时候召开 迷你世界服务器建筑 微信小程序的数据库太蠢了吧 无盘服务器管理 寒武纪系统软件开发面试 源景软件开发有限公司 二级mysql数据库单选题 网络安全实用技术第3版 不发生网络安全和涉警舆情 广东二手服务器虚拟主机 鼎捷软件的软件开发工程师职能 南关区网络技术咨询质量保障 今年以来发生的网络安全事件
0