K8s: 从集群外部访问Service

从集群外部访问 Service


1 )概述

  • 在前面我们一直实践的是在集群内部访问 Service,之前有2种方法
    • 方法1:在一个node节点上,通过对创建的的时候,对port进行一个环境变量的注册
    • 来保证Service能够正确对 不同的pod 访问到
    • 就是在这个node节点上,也是在集群内部
    • 方法2:另外一种方式呢是通过DNS记录
    • 比如说静态的pod创建这种专有域名的方式来保证集群内部都能访问到这个pod,这个service
  • 但是,有些服务,比如说前端的应用 nginx,它要对集群外部进行服务提供的
  • 所以在这种情况下,需要集群提供对外部访问的这种机制
  • K8s提供了ClusterIP, NodePort和 LoadBalancer 这三种方式提供集群外部的访问
  • ClusterIP
    • 仅仅使用一个集群内部的IP地址 - 这是默认值
    • 选择这个值意味着你只想这个服务在集群内部才可以被访问到
    • 像你创建这个 Service, 默认,它会给你创建一个集群内部的一个IP地址
    • 它是一个相当于是一个内网的IP这个IP, 实际上, 外网(公网)它是访问不到的
    • 如果你是在内网的话,不推荐用这种方式创建 Service
  • NodePort
    • 在集群内部IP的基础上,在集群的每一个节点的端口上开放这个服务
    • 你可以在任意:NodePort地址上访问到这个服务
    • 这里的node指的是 worknode,在这个node上开一个端口,任何在这个端口口的请求
    • 它会会被转发到咱们的这个NodePort类型的service上
    • 如果是自己实践的话,可以实现这种NodePort类型的方式
  • LoadBalancer
    • 在使用一个集群内部IP地址和在NodePort上开放一个Service的基础上
    • 还可以向云提供者申请一个负载均衡器
    • 将流量转发到已经以NodePort形式开发的Service上
    • 在公网生产环境使用的时候,推荐是用这个LoadBalancer去负载均衡的方式
    • 向云提供商申请一个负载均衡器,然后这个负载均衡器再把流量转发到咱们的集群内部
    • 或者NodePort上开个放一个Service, 一般在公有云上上可以用 ELB 服务去构建Service域名

2 )基于NodePort来实践

  • 首先还是创建Service, 用于pod的通信
  • 之后创建这个deployment,创建deployment之后,它会创建一个nginx中的一个pod
  • 新建 node-port-nginx.yaml
    apiVersion: v1
    kind: Service
    metadata:
      name: svc-node-port-nginx
      labels:
        app: nginx
        name: nginx-deployment
    spec:
      type: NodePort
      selector:
        app: nginx
      ports:
      - port: 80
        name: svc-nginx-30001
        protocol: TCP
        targetPort: 80
        nodePort: 30001
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: dep-node-port-nginx
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx
            resources:
              limits:
                memory: "64Mi"
                cpu: "500m"
            ports:
            - containerPort: 80
    
  • $ kubectl apply -f node-port-nginx.yaml
    service/svc-node-port-nginx created
    deployment.apps/dep-node-port-nginx created
    
  • $ kubectl get all
    NAME                                       READY   STATUS             RESTARTS          AGE
    pod/dep-node-port-nginx-854c74b9f4-96cmt   1/1     Running            0                 51s
    
    NAME                          TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
    service/svc-node-port-nginx   NodePort    10.1.135.122   <none>        80:30001/TCP   51s
    
    NAME                                  READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/dep-node-port-nginx   1/1     1            1           51s
    
    NAME                                             DESIRED   CURRENT   READY   AGE
    replicaset.apps/dep-node-port-nginx-854c74b9f4   1         1         1       51s
    
  • 我们知道,这个服务的地址应该是这个Node的ip地址,而端口就是暴露出来的30001
  • $ kubectl describe pod dep-node-port-nginx-854c74b9f4-96cmt | grep Node 查看部署到了哪台机器上
    Node:         node2.k8s/10.211.55.12
    Node-Selectors:              <none>
    
  • 从上面可知道,外网可访问的地址为: 10.211.55.12:30001
  • 在浏览器上输入上述地址,呈现出: “Welcome to nginx!” 的页面,说明网络通畅了
  • 因为这台WorkNode节点是可以被外网访问到的, 基于之前的Service, 在这个Node节点上开了 30001 的端口
  • 访问这个 30001 端口会被路由到后端Service的80端口, 这个Service的80端口又会被转发到pod的80端口
  • 基于这种层层转发,才能访问到这个 nginx

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/579981.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

mysql-sql-练习题-2

日期topN 日期最值 topN 任意区间topN 每年温度top2建表排名函数万能公式&#xff08;条关&#xff09; 任意区间 各科第1,3,5名排名函数万能公式 日期 本周过生日 -- 本周表示 加减日期 格式化 拼接 select * from student where date_format(s_age,concat(year(curdate()),…

微信小程序开发:2.小程序组件

常用的视图容器类组件 View 普通的视图区域类似于div常用来进行布局效果 scroll-view 可以滚动的视图&#xff0c;常用来进行滚动列表区域 swiper and swiper-item 轮播图的容器组件和轮播图的item项目组件 View组件的基本使用 案例1 <view class"container"&…

【FPGA】优化设计指南(一):设计原则

目录 避免采用不可综合的语句设计时采用同步的时钟组合逻辑与毛刺异步复位与同步复位动态分析与静态分析功能流水线时序违例乒乓操作面积和速度的平衡避免采用不可综合的语句 1.#1000延时语句 2.除法运算/,除非除数为2的整次幂 3.实数类型不可综合(real) 4.综上,使用可综合…

远程连接docker,实现本地发布版本到服务器

最近在学jenkins的时候&#xff0c;发现涉及到了docker的远程发布调用。后续应该还要自己搭建一个docker的本地仓库。 简单描述一下具体是如何实现的&#xff1a; 1、将docker的服务器开启2375端口&#xff08;注意&#xff0c;这里的开启是将端口直接暴露出去&#xff0c;不用…

【python技术】akshare爬取A股最新业绩预告保存进excel的简单示例

最近A股上市公司陆续在出年报和一季度报了&#xff0c; 心里寻思着要不用python把这些数据爬取下来分析下&#xff0c;说干就干。 数据来源网站东方财富&#xff1a;https://data.eastmoney.com/bbsj/ 我这个人比较懒&#xff0c;直接用akshare封装的方法来搞定 之前用aksha…

uniapp 对接谷歌第三方登录

1.登录谷歌开发者后台 https://console.developers.google.com/ 2.添加凭证 3.拿到客户端id后&#xff0c;项目中配置google登录&#xff1a; 示例代码&#xff1a; async googleLogin(){const { provider } await uni.getProvider({ service:oauth })if(provider.includes…

【WBS工作分解结构】项目管理必会的思维分析工具 09

关于工作中“量”的分解&#xff0c;最核心的问题是投入工作量如何相对准确的评估。&#xff1a; WBS工作包分解法&#xff1a;将重点工作任务拆分为具体的子任务&#xff0c;然后分别对各个子任务进行估算&#xff0c;最后将各子任务时间求和&#xff08;原则上每个子任务不可…

Springboot+Vue项目-基于Java+MySQL的非物质文化网站设计与实现(附源码+演示视频+LW)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &…

机器学习高频问答题总结

机器学习问答题总结 第一章 线性回归1.什么是线性回归&#xff1f;解释主要原理2.解释线性回归中最小二乘法的原理吗&#xff1f;3.如何评估线性回归模型的性能&#xff1f;4.线性回归中正则化的目的是什么吗&#xff1f;L1正则化和L2正则化有什么不同&#xff1f; 第二章 逻辑…

北京人形机器人创新中心发布新款人形机器人平台,奔跑速度可达6km/h,可适应多种地形环境...

今天&#xff0c;北京人形机器人创新中心发布了一款人形机器人&#xff0c;名叫“天工”&#xff0c;拥有更加自然和拟人的步行姿态&#xff0c;支持奔跑&#xff0c;且奔跑速度可达到6km/h&#xff0c;也可以适应不同的地形环境&#xff0c;比如楼梯和坡道地形。 下面是这款机…

探索矿业数字化平台:实现智能化采矿与管理

随着信息技术的迅猛发展&#xff0c;矿业领域也在逐步实现数字化转型。数字化平台的出现为矿业企业带来了更高效、更智能的采矿与管理方式。本文将探讨矿业数字化平台的意义、特点以及未来发展方向。 ### 1. 数字化平台的意义 传统的矿业生产和管理方式存在诸多问题&#xff…

基于ERNIR3.0模型的向量计算的开发与实践

参考&#xff1a;飞桨PaddlePaddle-源于产业实践的开源深度学习平台 自然语言处理 Paddle NLP - 检索式文本问答-理论 - VipSoft - 博客园 (cnblogs.com) 词向量&#xff08;Word Embedding&#xff09;是表示自然语言里单词的一种方法&#xff0c;即把每个词都表示为一个N维…

.net6 webapi 部署到IIS

一、发布.net6 webapi 项目 1.1 visual studio 2022右键发布到文件夹。 二、增加IIS容器 2.1 控制面板 2.2 启用或关闭Windows功能 3.3 勾选Internet Information Services,点击确定进行安装 三、部署webapi到IIS 3.1 安装 dotnet-hosting-6.0.29-win.exe 3.2 创建应用…

vue 项目关于不同分辨率的电脑网页适配方案

流式布局&#xff1a;这是一种相对灵活的布局方式&#xff0c;页面的元素宽度使用相对宽度&#xff08;例如百分比&#xff09;来定义&#xff0c;而不是使用绝对宽度&#xff08;例如像素&#xff09;。这样&#xff0c;当浏览器窗口大小变化时&#xff0c;元素会自动调整大小…

csdn的复制代码功能如何实现

页面布局分析&#xff1a; 按钮在文本框里面&#xff0c;所以文本框是父元素&#xff0c;按钮是子元素。要使得按钮在文本框的右上角&#xff0c;需要使用绝对定位。 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8">…

数字电路-可预置倒计时器Multisim仿真

数字电路之于FPGA意义重大。本“可预置倒计时器”设计采用施密特触发器40106作为振荡电路&#xff0c;由同步十进制可逆计数器74LSl92、译码器74LS47D和七段共阳数码管构成计时电路&#xff0c;具有启动/预置、暂停/继续计时和报警功能。紫色文字是超链接&#xff0c;点击自动跳…

Vscode配置C/C++编程环境@配置C和CPP的运行和调试环境@配置过程的相关问题@中文文件名乱码@build和debug方案组合配置

文章目录 abstractgcc/g文档和用法常见用例设置源文件编码和调试信息选型示例 目录.vscode中的相关文件说明tasks.jsonlaunch.jsonc_cpp_properties.json IDE或编辑器配置vscode配置相关指令和快捷键默认task配置和取消默认 配置文件使用vscode预置变量和环境变量环境变量的使用…

【树莓派】树莓派4B配置环境

当你在配置你的系统时&#xff0c;这些指令将会非常有用。首先&#xff0c;你可能需要设置代理&#xff0c;特别是当你在一个受限的网络环境下工作时。以下是一些指令的详细说明&#xff1a; 设置代理 export http_proxyhttp://192.168.3.2:10811 export https_proxyhttp://1…

冰箱主控 32位MCU,多通道、高精度的AD采样配合温度传感器,实现冰箱各温室的精确控温;低功耗设计

概览 小华高性价比32位MCU&#xff0c;多通道、高精度的AD采样配合温度传感器&#xff0c;实现冰箱各温室的精确控温&#xff1b;低功耗设计&#xff0c;绿色低碳、节能环保&#xff1b;模块化设计&#xff0c;充分利用丰富的通讯接口&#xff0c;使主控板、显示板和驱动板灵活…

贝叶斯(Bayes)法则

1.生活中的贝叶斯 学概论统计或者机器学习经常都会提到贝叶斯法则&#xff0c;它到底是个啥&#xff0c;让我们一起看看。在生活中我们都会对人或者事物有一个非常主观的判断&#xff0c;这个主观的判断的基础是我们的生活经历总结出来的经验。先来两个例子&#xff1a; One&a…
最新文章