k8s系列-Rancher 上操作的k8s容器网络配置总结

Rancher 上操作的k8s容器网络配置总结

要在 Rancher 中配置Spring Boot 应用 ykhd-zhjgyw-xpwfxfjfl 服务,正确的配置方式如下:

1. 应用程序监听端口

application.yaml 文件中,配置的应用监听端口是 10001,并且应用的上下文路径是 /ykhd/api/xpwfxfjfl。也就是说,Spring Boot 应用在容器内部的 10001 端口上运行,并将所有 API 请求映射到 /ykhd/api/xpwfxfjfl

yaml 复制代码
server:
  port: 10001
  servlet:
    context-path: /ykhd/api/xpwfxfjfl
2. Dockerfile 的 EXPOSE 声明

Dockerfile 中,尽管 EXPOSE 声明了 31002 端口,**这只是告知 Docker 哪个端口准备接受连接,但并不影响实际应用监听的端口。**因为应用实际监听的端口是 10001,在 Kubernetes 配置中,我们需要使用 10001 端口作为容器内部的端口,而不需要更改 Dockerfile。可以多申明几个。

Dockerfile 复制代码
EXPOSE 31002
3. Kubernetes Deployment 配置

Deployment 中,需要明确指定容器运行的端口 10001,即应用程序实际监听的端口。你可以通过 Rancher UI 或者 YAML 配置来定义 containerPort

yaml 复制代码
apiVersion: apps/v1
kind: Deployment
metadata:
  name: ykhd-zhjgyw-xpwfxfjfl
spec:
  replicas: 1
  selector:
    matchLabels:
      app: ykhd-zhjgyw-xpwfxfjfl
  template:
    metadata:
      labels:
        app: ykhd-zhjgyw-xpwfxfjfl
    spec:
      containers:
      - name: ykhd-zhjgyw-xpwfxfjfl
        image: your-docker-image
        ports:
        - containerPort: 10001  # 容器内部的实际端口

在 Rancher 的 UI 中,可以直接通过 "容器端口" 设置 10001 端口。容器之间可以通信。

4. Kubernetes Service 配置

为了让其他服务或外部访问到该服务,需要使用 Kubernetes Service 对象。你可以选择 ClusterIP(只在集群内部访问),或者 NodePort(通过集群节点暴露外部访问),甚至 LoadBalancer(通过云提供商的负载均衡器对外暴露)。

  • ClusterIP:如果不需要外部访问,仅供集群内部其他服务访问。
  • NodePort:用于将服务通过集群节点对外暴露。
  • LoadBalancer:如果你有云提供商的负载均衡器,可以对外暴露服务。
yaml 复制代码
apiVersion: v1
kind: Service
metadata:
  name: ykhd-zhjgyw-xpwfxfjfl
spec:
  type: NodePort  # 或者 ClusterIP,取决于访问需求
  selector:
    app: ykhd-zhjgyw-xpwfxfjfl
  ports:
    - protocol: TCP
      port: 10001       # Kubernetes Service 监听的端口
      targetPort: 10001  # 容器内部的应用实际运行端口
      nodePort: 31002   # 如果是 NodePort,可以指定外部访问的端口

在 Rancher UI 中,具体操作步骤:

  • 选择 ClusterIPNodePort
  • 设置 私有容器端口10001,这个是实际应用监听的端口。
  • 如果是 NodePort,可以手动设置 NodePort31002,这样外部访问时,可以通过 http://<Node_IP>:31002 访问服务。
5. 访问服务

根据需求,以下两种方式可以访问服务:

  • 集群内部访问

    如果使用 ClusterIP 类型,集群内的其他服务可以通过服务名称和端口 10001 访问:

    bash 复制代码
    http://ykhd-zhjgyw-xpwfxfjfl:10001/ykhd/api/xpwfxfjfl
  • 外部访问(使用 NodePort 或 LoadBalancer)

    如果你使用 NodePortLoadBalancer,可以通过外部的节点 IP 和 31002 端口访问:

    bash 复制代码
    http://<Node_IP>:31002/ykhd/api/xpwfxfjfl

总结:

  1. Spring Boot 应用监听端口 :10001(在 application.yaml 中配置)。
  2. 容器声明的 EXPOSE 端口 :31002(无需修改 Dockerfile,仅为声明)。
  3. Kubernetes 部署 :在 Deployment 中,确保 containerPort 设置为 10001,即应用程序实际监听的端口。
  4. Kubernetes 服务类型
    • ClusterIP:内部服务访问。
    • NodePort :外部通过 31002 访问,映射到应用的 10001 端口。
    • LoadBalancer:通过负载均衡器暴露外部访问。
相关推荐
wang090740 分钟前
网络协议之为什么要分层
网络·网络协议
程序媛学姐43 分钟前
Spring Cloud Kubernetes:在K8s环境中的服务发现与配置
spring cloud·kubernetes·服务发现
EasyDSS2 小时前
EasyCVR视频汇聚平台助力大型生产监控项目摄像机选型与应用
网络·人工智能·音视频
等猪的风3 小时前
openwrt作旁路由时的几个常见问题 openwrt作为旁路由配置zerotier 图文讲解
运维·服务器·网络
千码君20163 小时前
什么是数据链路层的CRC检测以及为什么要放到帧尾?
服务器·网络·网络协议·以太网·奇偶校验·crc检测·以太网帧
后院那片海3 小时前
Web基础与HTTP协议
网络·网络协议·http
科技小E3 小时前
EasyRTC嵌入式音视频通信SDK智能安防与监控系统的全方位升级解决方案
大数据·网络·人工智能·音视频
明天不下雨(牛客同名)4 小时前
Docker和K8s面试题
docker·容器·kubernetes
程高兴5 小时前
高压直流输电MATLAB/simulink仿真模型+说明文档
开发语言·网络·matlab
活跃的煤矿打工人7 小时前
【星海出品】K8S调度器leader
云原生·容器·kubernetes