使用ingress 暴露springcloud服务

云计算之kubernetes服务暴露——ingress 一,暴露方法 1、hostNetwork:true 在pod中使用该配置,在这种Pod中运行的应用程序可以直接看到pod启动的主机的网络接口。 2、hostPort:直接将容器的端口与所调度的节点上的端口路由,这样用户就可以通过主机的IP来访问Pod了。 3、NodePort:是K8s里一个广泛应用的服务暴露方式。K8s中的service默认情况都是使用Clu... 阅读详情

使用ingress 暴露springcloud服务

k8s 集群搭建成功了,也能部署应用了,但是不可能每次去访问服务的时候都要去查一下运行的node和nodePort吧,即使查好node和nodePort ,避免不了重启k8s或者 ReplicationController,node 和 nodeport 又会改变,K8s 提供了 Ingress 来解决这个问题。


1.生成一个默认的后端

生成一个默认的后端,如果遇到解析不到的URL就转发到默认后端页面

[root@master ingress]# cat default-backend.yaml 
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: default-http-backend
  labels:
    k8s-app: default-http-backend
  namespace: default
spec:
  replicas: 1
  template:
    metadata:
      labels:
        k8s-app: default-http-backend
    spec:
      terminationGracePeriodSeconds: 60
      containers:
      - name: default-http-backend
        # Any image is permissable as long as:
        # 1. It serves a 404 page at /
        # 2. It serves 200 on a /healthz endpoint
        image: docker.io/cdchen/defaultbackend:1.0 
        livenessProbe:
          httpGet:
            path: /healthz
            port: 8080
            scheme: HTTP
          initialDelaySeconds: 30
          timeoutSeconds: 5
        ports:
        - containerPort: 8080
        resources:
          limits:
            cpu: 10m
            memory: 20Mi
          requests:
            cpu: 10m
            memory: 20Mi
---
apiVersion: v1
kind: Service
metadata:
  name: default-http-backend
  namespace: default
  labels:
    k8s-app: default-http-backend
spec:
  ports:
  - port: 80
    targetPort: 8080
  selector:
    k8s-app: default-http-backend
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
[root@master ingress]# kubectl create -f default-backend.yaml 
deployment "default-http-backend" created
service "default-http-backend" created
  • 1
  • 2
  • 3

2.部署Ingress Controller

点击查看官方yaml

[root@master ingress]# cat  nginx-ingress-controller.yaml 
apiVersion: v1
kind: ReplicationController
metadata:
  name: nginx-ingress-lb
  labels:
    name: nginx-ingress-lb
  namespace: default
spec:
  replicas: 1
  template:
    metadata:
      labels:
        name: nginx-ingress-lb
      annotations:
        prometheus.io/port: '10254'
        prometheus.io/scrape: 'true'
    spec:
      terminationGracePeriodSeconds: 60
      hostNetwork: true
      containers:
      - image: docker.io/cdchen/nginx-ingress-controller:0.9.0-beta.12 
        name: nginx-ingress-lb
        readinessProbe:
          httpGet:
            path: /healthz
            port: 10254
            scheme: HTTP
        livenessProbe:
          httpGet:
            path: /healthz
            port: 10254
            scheme: HTTP
          initialDelaySeconds: 10
          timeoutSeconds: 1
        ports:
        - containerPort: 80
          hostPort: 80
        - containerPort: 443
          hostPort: 443
        env:
          - name: POD_NAME
            valueFrom:
              fieldRef:
                fieldPath: metadata.name
          - name: POD_NAMESPACE
            valueFrom:
              fieldRef:
                fieldPath: metadata.namespace
          - name: KUBERNETES_MASTER
            value: http://192.168.6.150:8080
        args:
        - /nginx-ingress-controller
        - --default-backend-service=$(POD_NAMESPACE)/default-http-backend
        - --apiserver-host=http://192.168.6.45:8080
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55

记得修改 - –apiserver-host=http://192.168.6.45:8080

[root@master ingress]# kubectl create -f nginx-ingress-controller.yaml 
replicationcontroller "nginx-ingress-lb" created
  • 1
  • 2

3.配置ingress

贴一个k8s dashboard 的 ingress配置

[root@master ingress]# cat k8s-dashboard.yaml 
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: k8s-dashboard-ingress
  namespace: kube-system
spec:
  rules:
  - host: k8s.webui
    http:
      paths:
      - path: /
        backend:
          serviceName: kubernetes-dashboard
          servicePort: 80
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
[root@master ingress]# kubectl create -f k8s-dashboard.yaml 
ingress "k8s-dashboard-ingress" created
  • 1
  • 2

理解如下:

  • host指虚拟出来的域名,具体地址(我理解应该是Ingress-controller那台Pod所在的主机的地址)应该加入/etc/hosts中,这样所有去k8s.webui的请求都会发到nginx
  • path:/console匹配后面的应用路径
  • servicePort主要是定义服务的时候的端口,不是NodePort.
  • path:/ 匹配后面dashboard应用的路径

在 node 节点中docker ps 查看是否存在ingress Controller,然后把对应的ip添加进本机host, 
在浏览器内访问 http://k8s.webui/ 
如下图: 
webui

贴一个前一篇博客介绍的多应用的部署的ingress 配置文件

[root@master ingress]# cat cloud-vue.yaml 
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: cloud-vue-api
  namespace: default
spec:
  rules:
  - host: cloud.vue.api
    http:
      paths:
      - path: /console
        backend:
          serviceName: helloworldsvc 
          servicePort: 7001
      - path: /
        backend:
          serviceName: cloud-simple-server
          servicePort: 8081


  - host: cloud.vue.eureka
    http:
      paths:
      - path: /
        backend:
          serviceName: cloud-eureka-server
          servicePort: 8888


  - host: cloud.vue.config
    http:
      paths:
      - path: /
        backend:
          serviceName: cloud-config-server
          servicePort: 1111 
  - host: cloud.vue.zipkin
    http:
      paths:
      - path: /
        backend:
          serviceName: cloud-zipkin-server
          servicePort: 9012
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44

注:已经使用ingress暴露服务了,再部署的时候service的类型可以选择internal了 ,不再需要external。还有https的配置,请参考 http://www.cnblogs.com/ericnie/p/6965091.html

手把手教你用KubeSphere部署谷粒商城:可视化CI/CD与微服务集群管理全流程 本文详细介绍了如何使用KubeSphere可视化平台,从零开始部署谷粒商城电商微服务集群的全流程。内容涵盖KubeSphere环境搭建、微服务容器化(Dockerfile最佳实践)、内置DevOps流水线(整合Jenkins)实现CI/CD自动化,以及MySQL、Redis、Nacos等中间件在K8s上的高可用部署与网络配置,为团队提供了一套完整的云原生微服务部署与运维实战方案。 阅读详情

相关推荐

英飞凌TC3XX芯片---------CAN模块详解

CAN 总线是一种广泛应用于汽车、工业控制和其他领域的串行通信协议,CAN 英文名称:Controller Area Network。最初由德国的 Bosch 公司开发,用于汽车电子系统之间的通信。CAN 总线具有高可靠性、抗干扰能力强和实时性好等特点,因此被广泛应用于需要可靠数据传输的领域。CAN2.0B 协议中的 CAN 最多支持 29 位 ID,但是网络架构中使用的一般是 11 位的标准帧 ID。如下图是标准 CAN FD 帧数据结构:关于 CAN 协议相关内容,本文不作阐述。

sky的博客 3669

最近关于EurekaServer、EurekaClient以及Ingress的一些使用心得

最近关于EurekaServer、EurekaClient以及Ingress的一些使用心得要点使用Ingress的方式替代NodePort,同时支持IP白名单理解EurekaClient的心跳机制并让healthCheck生效 要点 最近工作中对EurekaServer、EurekaClient、Ingress又做了一些优化,主要分一下几个场景: 1、集群中存在大量NodePort,项目早期比较偷懒所以就用这个方式,导致通信矩阵复杂,管理麻烦,如何解决? 2、EurekaServer上实例注册后,此时请求S

weixin_42305433的博客 597

Cisco Packet Tracer实战:三层交换机链路聚合配置全流程(附常见错误排查)

本文详细解析了在Cisco Packet Tracer环境中配置三层交换机链路聚合的全流程,包括基础网络设置、LACP协议配置、路由协议集成及高级优化技巧。通过实战案例和常见错误排查指南,帮助网络工程师和CCNA备考学员掌握这一提升带宽利用率和实现链路冗余的核心技术。

grafana6viz的博客 230

Kubernetes核心-对外暴露应用Ingress

Kubernetes-对外暴露应用Ingress1、Ingress1.1 Ingress和Pod关系1.2 Ingress工作流程1.3 使用ingress步骤1.4 使用ingress对外暴露应用 1、Ingress Ingress不是Kubernetes内置的,需要单独安装应用,来做负载均衡。 将端口号对外暴露,通过IP+端口号进行访问。 使用Service里面的NodePort可以实现。 NodePort缺陷: 在每个节点上都会起到端口,在访问时候通过任何节点,通过节点ip+暴露端口号实现访问。

爱是与世界平行 1613

Simulink中通过MEX与MinGW实现C/C++结构体变量的高效导入

本文详细介绍了在Simulink中通过MEX工具链与MinGW编译器,高效导入C/C++结构体变量的完整流程。文章从需求背景出发,逐步讲解了MinGW环境配置、.h文件编写规范、核心导入命令Simulink.importExternalCTypes的使用,以及如何在MATLAB Function模块和总线创建器中调用自定义结构体,旨在实现模型与代码的无缝对齐,为后续仿真和代码生成奠定坚实基础。

weixin_29056781的博客 343

GraphRAG 与 HippoRAG 深度对比:在 RAGFlow 中如何选择知识图谱方案?

本文深入对比了GraphRAG与HippoRAG在RAGFlow中的知识图谱构建方案,分析了两者在技术架构、资源消耗和场景适配性上的核心差异。GraphRAG适合需要快速响应和资源有限的场景,而HippoRAG则更适用于精确关系推理的专业领域。文章还提供了RAGFlow的演进路线和选型决策框架,帮助架构师根据实际需求做出合理选择。

weixin_27889245的博客 247

Go微服务架构实战 中篇:4. 基于ingress的限流,路径匹配和重写实战

Go微服务架构实战Go微服务架构实战目录1. 微服务架构上篇1. grpc技术介绍2. grpc+protobuf+网关实战3. etcd技术介绍4. 基于etcd的服务发现与注册5. 基于etcd的分布式锁实战2. 微服务架构中篇1. k8s架构介绍2. 基于k8s的容器化部署3. 基于k8s的Deployment工作负载4. 基于k8s的ingress实战到现在为止我们的服务都是跑在集群内部的,为了让集群外部也能访问,那么我们需要让服务外化,但是因为minikube在mac上是网络不通的,所以我们我们直

stackfuture的博客 2638

海康威视VS互联网大厂:薪资、福利、工作强度全方位对比

本文全面对比了海康威视与互联网大厂在薪资、福利和工作强度等方面的差异。海康威视提供稳定的薪资结构和较低的工作强度,适合追求专业深度的职场人;而互联网大厂则以高薪和快速成长吸引人才,但工作压力较大。文章还分析了职业发展路径和长期价值,帮助求职者做出明智选择。

weixin_29171129的博客 390

k8s-nginx-ingress eureka二级路径转发的问题

eureka:默认端口 8761 需要使用路径代理8761端口的访问。 apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: eureka namespace: default annotations: nginx.ingress.kubernetes.io/rewrite-target: /$2 nginx.ingress.kubernetes.io/configuration-snippet: ...

huhaiand的专栏 1168

lift off工艺为什么常用蒸发的方式镀膜?

电子束蒸发中,蒸发物质从源头直接升华并沿直线路径沉积到晶圆上,它可以避免金属在掩模侧壁的覆盖,只在表面进行沉积。在镀膜结束后,在进行光刻胶剥离时,去胶液无法与光刻胶接触反应,导致光刻胶剥离很困难。欢迎加入我的半导体制造知识星球社区,目前社区有1900人左右。我观察到晶圆厂中lift off工艺,镀膜都是用的电子束蒸发的方式,很少有用磁控溅射的方式,为什么?需要增加撕胶工序,将胶面上覆盖的膜层撕掉,使光刻胶露出,这样才容易剥离。上图为磁控溅射的膜层截面图,去胶液很难突破侧壁膜层,进行反应。

1685

vCenter6.7证书过期导致503报错的全面修复指南:从STS证书更新到SSL信任修复

本文详细解析了VMware vCenter 6.7因STS证书过期导致503服务不可用错误的根本原因,并提供了从诊断、更新STS证书到修复SSL信任链的完整解决方案。通过命令行工具检查证书状态,使用官方脚本更新过期STS证书,并利用lsdoctor工具修复深层SSL信任问题,最终指导用户使用certificate-manager彻底重置所有证书,帮助管理员快速恢复vCenter服务。

pz890123的博客 1293

搭建及使用K8s集群 [使用ingress 暴露springcloud服务]

使用ingress 暴露springcloud服务k8s 集群搭建成功了,也能部署应用了,但是不可能每次去访问服务的时候都要去查一下运行的node和nodePort吧,即使查好node和nodePort ,避免不了重启k8s或者 ReplicationController,node 和 nodeport 又会改变,K8s 提供了 Ingress 来解决这个问题。1.生成一个默认的后端生成一个默认的

JustHaveTry的专栏 7417

C# 动态壁纸实战:7步带你从零开始制作动态壁纸

动态壁纸是指在计算机桌面上播放视频、动画或交互式内容的一种技术。与传统的静态壁纸相比,动态壁纸更加生动有趣,可以大大提升桌面的观赏性和互动性。通过本文的详细讲解和代码示例,相信你已经学会了如何使用C#实现动态壁纸。动态壁纸不仅能够提升桌面的美观度,还能展示你的编程技能。希望这篇教程对你有所帮助,期待你在C#编程中取得更大的成就!🌟✨如果你有任何问题或建议,欢迎在评论区留言交流!希望这篇教程对你有所帮助,期待你在C#编程中取得更大的成就!😊✨😊✨。

java专栏 1673

Kubernetes部署SpringCloud(三) 使用 Ingress-nginx 暴露服务

之前部署的zuul以及basic-info-api都仅仅在于flannel网络内可以访问. 现在来使用Ingress-nginx对外暴露服务 以下用到的一些docker镜像,是存在我私有仓库的,请自行替换 创建命名空间namespace.yaml或者直接kubectlcreatenamespaceingress-nginx apiVersion: v1 kind: N...

weixin_30483013的博客 244

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

基于K8S+ingress改造vue+nginx+springcloud微服务(一)

背景 前端项目整体架构使用vue开发web/h5然后部署到nginx上,后端使用springlcoud+docker进行部署。 Ingress介绍 Ingress 是对集群中服务的外部访问进行管理的 API 对象,典型的访问方式是 HTTP和HTTPS。 Ingress 可以提供负载均衡、SSL 和基于名称的虚拟托管。 必须具有 ingress 控制器【例如 ingress-nginx】才能满足 Ingress 的要求。仅创建 Ingress 资源无效。 ...

woshiyizhiyu0的博客 2466

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

SpringCloud 微服务迁移到 Kubernetes 容器化完整流程

???? 这是一个或许对你有用的社群???? 一对一交流/面试小册/简历优化/求职解惑,欢迎加入「芋道快速开发平台」知识星球。下面是星球提供的部分资料:《项目实战(视频)》:从书中学,往事上“练”《互联网高频面试题》:面朝简历学习,春暖花开《架构 x 系统设计》:摧枯拉朽,掌控面试高频场景题《精进 Java 学习指南》:系统学习,互联网主流技术栈《必读 Java 源码专栏》:知其然,知其所以然????这是一个或许...

芋艿V 552

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

CC00418.CloudKubernetes——|KuberNetes&NetworkPolicy.V10|——|Ingress.v01|服务发布限制.v01|

一、服务发布限制于Ingress:架构图 二、架构图概述 ### --- 架构图概述 ~~~ 一个项目前端和网关对外暴露,其它的应用是不需要对外暴露得 ~~~ 假设有一个SpringCloud项目,可能会有一个nodejs作为前端,zuul作为网关入口, ~~~ 发布应用的时候,会在ingress-nginx上配置一个根到前端 ~~~ ...

yanqi_vip 126

k8s+springcloud+nacos部署配置

k8s+springcloud+nacos部署配置

xiaogg3678的专栏 1208

搭建及使用K8s集群 <目录>

目录 (1) ………………………………………………………………….k8s简介 (2)……………………………………………………………..k8s集群搭建 (3)……………………………………….k8s dashboard pod方式部署 (4)……………………………………k8s集群部署springcloud 单应用 (5)……………………………………………………………k8s Dns 部署 (6)……………

JustHaveTry的专栏 2465

k8s部署nacos

k8s部署nacos

qq_21277357的博客 716

k8s-部署spring cloud微服务

注:commons公共项目服务不用打包,一般commons是一些公共的工具类或者一些公共的插件服务,比如redis、kafka、oss等公共服务让其他业务微服务引入依赖使用。注:因为是测试学习不是实际生产,镜像在服务器本地,所以要修改镜像拉取策略为本地拉取NEVER。注:以下都是学习测试使用,实际生产中肯定会不太一样。

一寸一寸光阴 362

- org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection

💡 亲爱的技术伙伴们:你是否正在为这些问题焦虑——✅ 简历投出去杳无音信,明明技术不差却总卡在面试?✅ 每次终面都紧张不已,不知道面试官到底想要什么答案?✅ 技术知识点零零散散,遇到系统设计题就头脑一片空白?🎯这不是普通的面试题汇总,而是凝聚多年面试官经验的。我不仅告诉你答案,更帮你建立面试官的思维模式。🔗🎯 精准人群定位🔥 《》(完整技术体系)🚀⚡🌊🛠️🔒🔄👥🏗️🚀 立即行动,改变从现在开始!🔗不要再让面试成为你职业发展的绊脚石!用时间系统准备,轻松应对各种技术面试场景。💪。

我是Java程序员廖志伟,感谢朋友们的支持!不定期贡献一篇高品质、过万文字、图文并茂且附有视频解说、满载代码示例注释的良心之作,坚决杜绝粗制乱造。 431

k8s部署springcloud_k8s部署springcloud实际落地操作

背景我们项目开始使用了微服务springcloud alibaba,每个服务都有多个实例,刚开始用脚本手动部署,实在是麻烦。后来决定上k8s来解决此问题,k8s是什么我这里就不展开说了。我这里主要说怎么用k8s来解决部署的问题的。springcloud里面的概念k8s里大部分都有可以替换的方案了,比如配置中心,注册中心,客户端调用服务的时候负载均衡等。痛点:如果在springcloud的项目中,配...

weixin_39707851的博客 4050

Vmware虚拟机搭建 K8S ingress Jenkins Gitlab Harbor Docker 一键部署SpringCloud微服务

本文主要基于Kubernetes1.22.2和Linux操作系统Ubuntu 20.04.6。2.1 概述 2.2Kubernetes 组件Kubernetes 集群架构如下:Kubernetes 集群组件如下:请解释一下Kubernetes的架构和核心组件。 Kubernetes的架构包括Master节点和Node节点。核心组件包括kube-apiserver、etcd、kube-scheduler、kube-controller-manager、kubelet和kube-proxy等。 node

2713

kubernetes(K8s)(四)——Pod 控制器详解(六种控制器)、Service详解(Service 介绍、类型、使用、Ingress介绍、使用)

Pod 控制器详解(六种控制器)、Service详解(Service 介绍、类型、使用、Ingress介绍、使用)

qq_41824825的博客 1404
上一篇: k8s集群部署springcloud 单应用
下一篇: Spring Cloud Kubernetes
hxpjava1
博客等级 码龄19年 1365粉丝 511原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值