【kubernetes】外部访问四大方式

方法一:使用 Ingress

Ingress 是一种更灵活的方式,可以通过 HTTP/HTTPS 路由流量到不同的服务。它通常用于基于路径或子域名路由到不同的服务。
步骤:

1.确保你已经部署了 Ingress Controller(如 Nginx Ingress Controller)。
2.创建 Ingress 资源,将外部请求路由到你的 ClusterIP Service。

如果没有部署请转到 【Kubernetes】Ingress-nginx快速入门

示例 Ingress 配置:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: example-ingress
  namespace: default # 根据实际情况修改命名空间
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host: your-domain.com # 请替换为你的实际域名
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: my-clusterip-service # 替换为你的Service名称
            port:
              number: 80 # 替换为你的Service端口

1.配置 DNS 解析,将 your-domain.com 指向 Ingress Controller 的 IP 地址。(这里可以临时修改本地hosts文件)

Kebu节点Ip your-domain.com

将上面的加入到本地/etc/hosts 即可

方法二:更改服务类型为 NodePort

NodePort 类型的服务会在每个节点上开放一个特定端口,并将该端口上的流量转发到服务。
步骤:

1.修改你的服务定义文件,将 type 字段改为 NodePort。

示例:

apiVersion: v1
kind: Service
metadata:
  name: my-nodeport-service
spec:
  type: NodePort
  selector:
    app: MyApp # 确保与Pod标签匹配
  ports:
    - protocol: TCP
      port: 80 # 服务端口
      targetPort: 8080 # 容器监听的端口

2.应用这个配置后,Kubernetes 会自动分配一个外部可访问的端口(默认范围 30000-32767),或者你可以手动指定 nodePort 值。

3.访问服务:通过 <任意节点的IP>: 来访问服务。

测试,输出服务的内容即正常

curl http://<任意节点的IP>:<NodePort> 

方法三:使用 LoadBalancer (云环境)

如果你运行在支持负载均衡器的云环境中(如 AWS, GCP, Azure 等),可以将服务类型设置为 LoadBalancer。这将自动为你创建一个外部负载均衡器,并将流量导向你的服务。
示例:

apiVersion: v1
kind: Service
metadata:
  name: my-loadbalancer-service
spec:
  type: LoadBalancer
  selector:
    app: MyApp # 确保与Pod标签匹配
  ports:
    - protocol: TCP
      port: 80 # 服务端口
      targetPort: 8080 # 容器监听的端口

应用此配置后,云提供商会为你的服务分配一个外部 IP 地址,你可以通过这个 IP 地址访问服务。

方法四:使用 Port Forwarding (临时解决方案)

虽然这不是一种长期的解决方案,但有时可用于开发和调试目的。
使用 kubectl port-forward:

kubectl port-forward svc/my-clusterip-service 8080:80 -n <namespace>

然后你可以通过 localhost:8080 访问服务。但是请注意,这种方法仅限于本地访问,并不适合生产环境下的外部访问需求。
总结

  • Ingress: 更加灵活,适合基于路径或域名的路由。
  • NodePort: 在每个节点上开放一个端口,简单直接。
  • LoadBalancer: 适用于云环境,自动创建负载均衡器。
  • Port Forwarding: 适用于临时调试,不推荐用于生产环境。
    选择哪种方式取决于你的具体需求、环境以及可用资源。
### 微服务架构概述 微服务架构是一种将单体应用程序分解成小型、独立的服务的设计模式。每个微服务负责处理特定业务功能,并通过轻量级通信机制(如HTTP REST API)与其他微服务交互。这种架构的优势在于提高了系统的灵活性、可维护性和扩展性,同时降低了各个模块之间的耦合度。 #### 关键特性 - **松耦合**:各服务之间相互独立,减少了对其他组件的依赖。 - **高内聚**:每一个微服务专注于单一职责,使得系统更易于理解和管理。 - **异构技术栈支持**:不同团队可以自由选择最适合的技术栈开发各自的服务。 --- ### 高校校友管理系统需求分析 随着信息技术的发展和社会进步的需求,在线平台逐渐成为连接学校与毕业生的重要纽带之一。为此,构建高效便捷的校友管理系统显得尤为必要。以下是该系统的主要目标: 1. **信息整合**:收集并存储学生在校期间的基本资料及毕业后的职业发展情况等数据; 2. **互动交流**:提供在线论坛等功能促进师生间以及同学间的沟通联系; 3. **资源共享**:发布就业机会招聘信息或学术讲座通知等内容帮助用户获取有用资讯; 4. **个性化推荐**:基于用户的兴趣爱好为其定制化推送相关内容和服务; 为了满足以上述各项核心诉求所提出的挑战,我们采用了微服务框架作为解决方案的基础架构设计思路。 --- ### 系统整体结构设计 整个项目按照领域驱动设计理念划分为以下几个主要部分: 1. **身份认证中心 (Authentication Service)** - 负责账户注册登录验证权限控制等工作流程; 2. **个人信息服务中心(Personal Information Management Service)** – 维护个人档案包括但不限于教育背景工作经历联系方式等等基本信息; 3. **社交网络服务平台(Social Networking Platform Service)**– 搭建虚拟社区让用户可以在平台上互相认识建立友谊分享经验见解; 4. **资源分发门户(Resource Distribution Portal)**– 整理汇总各类有价值的内外部材料供会员查阅下载参考学习; 此外还包括用于支撑上述四大板块运作所需要的一些辅助设施比如日志记录性能监控安全防护等非功能性组成部分共同构成了完整的“高校校友管理系统”。 --- ### 技术选型与实现细节 对于这样一个复杂的应用程序来说,选用适当的技术方案至关重要。考虑到项目的规模特点及其长期发展的需要,这里列举了一些关键技术和工具的选择依据: | 类别 | 推荐选项 | |------------|------------------------------| | 编程语言 | Java / Python | | Web框架 | Spring Boot | | 数据库 | MySQL | | 分布式消息队列 | RabbitMQ | | 容器编排引擎 | Kubernetes | ##### 示例代码片段展示如何在一个SpringBoot应用中配置RabbitMQ来进行简单的消息发送接收操作: ```java @Configuration public class RabbitConfig { @Bean Queue queue() { return new Queue("hello"); } } @RestController class HelloController { private final AmqpTemplate rabbitTemplate; public HelloController(AmqpTemplate rabbitTemplate) { this.rabbitTemplate = rabbitTemplate; } // 发送消息至指定queue名称为"hello" @GetMapping("/send") String send(@RequestParam(value="msg", defaultValue="Hello World!") String msg){ rabbitTemplate.convertAndSend("hello", msg); return "Message sent!"; } } ``` 此段示例展示了利用AMQP协议向名为`hello`的目标交换机投递一条文本形式的信息流,并通过GET请求接口触发相应的动作逻辑。 --- ### 测试策略与部署规划 由于本系统由多个分布式单元构成,在保证质量的前提下顺利完成上线前的各项准备工作尤为重要。因此制定了详尽的质量保障措施和部署实施方案: 1. **自动化测试覆盖率最大化**: 包含单元测试集成测试UI层面的功能性测试等多个层次上都进行了充分覆盖,确保每一次改动都能被及时发现潜在风险点所在位置以便快速修复调整优化方向。 2. **持续集成环境搭建完善** : 结合Jenkins GitLab CI等开源工具链实现了从提交源码到最终生成制品包全流程的一站式流水作业生产线建设过程. 3. **灰度发布策略制定实施** :当有新版本准备就绪后先针对小范围内的真实用户体验一段时间后再逐步扩大影响力直至全面切换成功为止. 最后值得一提的是关于容器化的实践——Docker镜像打包+Kubernetes集群调度的方式能够极大地简化运维成本提升运行效率降低人为失误概率。 --- ### 总结展望未来发展趋势 综上所述,“基于微服务的高校校友管理系统”的设计方案不仅有效地解决了传统集中式管理模式下难以克服的问题,还为后续迭代升级预留了广阔的空间。当然现阶段也存在一些亟待解决的实际困难例如跨域访问限制导致的部分API调用失败现象等问题仍然有待进一步探讨研究寻找更好的对策加以改进提高稳定性和响应速度等方面的表现水平。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值