当前位置: 首页 > news >正文

常州门户网站建设软文发布推广平台

常州门户网站建设,软文发布推广平台,wordpress 虎嗅,广州网站建设流程图公众号关注 「奇妙的 Linux 世界」设为「星标」,每天带你玩转 Linux !在 Kubernetes 中 Service 主要有4种不同的类型,其中的 ClusterIP 是最基础的,如下图所示:当我们创建一个 NodePort 的 Service 时,它也…

公众号关注 「奇妙的 Linux 世界」

设为「星标」,每天带你玩转 Linux !


在 Kubernetes 中 Service 主要有4种不同的类型,其中的 ClusterIP 是最基础的,如下图所示:

当我们创建一个 NodePort 的 Service 时,它也会创建一个 ClusterIP,而如果你创建一个 LoadBalancer,它就会创建一个 NodePort,然后创建一个 ClusterIP

此外我们还需要明白 Service 是指向 pods 的,Service 不是直接指向 Deployments 或 ReplicaSets,而是直接使用 labels 标签指向 Pod,这种方式就提供了极大的灵活性,因为通过什么方式创建的 Pod 其实并不重要。接下来我们通过一个简单的例子开始,我们用不同的 Service 类型来逐步扩展,看看这些 Service 是如何建立的。

No Services

最开始我们没有任何的 Services。

我们有两个节点,一个 Pod,节点有外网(4.4.4.1、4.4.4.2)和内网(1.1.1.1、1.1.1.2)的 IP 地址,pod-python 这个 Pod 只有一个内部的 IP 地址。

现在我们添加第二个名为 pod-nginx 的 Pod,它被调度在 node-1 节点上。在 Kubernetes 中,所有的 Pod 之间都可以通过 Pod 的 IP 进行通信,不管它们运行在哪个节点上。这意味着 pod-nginx 可以使用其内部IP 1.1.1.3 来 ping 和连接 pod-python 这个 Pod。

现在如果 pod-python 挂掉了重新创建了一个新的 pod-python 出来(本文不涉及如何管理和控制 pods),重新分配了一个新的 1.1.1.5 的 Pod IP 地址,这个时候 pod-nginx 就无法再达到 1.1.1.3 这个之前的地址了,为了防止这种情况发生,我们就需要创建一个 Service 服务了!

ClusterIP

和上面同样的场景,但是我们创建了一个名为 service-python 类型为 ClusterIP 的 Service 服务,一个 Service 并不像 Pod 那样运行在一个特定的节点上,这里我们可以假设一个 Service 只是在整个集群内部的内存中可用就可以了。

pod-nginx 可以安全地连接到 1.1.10.1 这个 ClusterIP 或直接通过 dns 名service-python 进行通信,并被重定向到后面一个可用的 Pod 上去。

现在我们来稍微扩展下这个示例,启动3个 python 实例,现在我们来显示所有 Pod 和 Service 内部 IP 地址的端口。

集群内部的所有 Pods 都可以通过 http://1.1.10.1:3000 或者 http://service-python:3000 来访问到后面的 python pods 的443端口。

service-python 这个 Service  是随机或轮询的方式来转发请求的,这个就是 ClusterIP Service 的作用,它通过一个名称和一个 IP 让集群内部的 Pods 可用。

上图中的 service-python 这个 Service 可以用下面的 yaml 文件来创建:

apiVersion: v1
kind: Service
metadata:name: service-python
spec:ports:- port: 3000protocol: TCPtargetPort: 443selector:run: pod-pythontype: ClusterIP

创建后,可以用 kubectl get svc 命令来查看:

NodePort

现在我们想让 ClusterIP Service 可以从集群外部进行访问,为此我们需要把它转换成 NodePort 类型的 Service,在我们的例子中,我们只需要简单修改上面的 service-python 这个 Service 服务即可:

apiVersion: v1
kind: Service
metadata:name: service-python
spec:ports:- port: 3000protocol: TCPtargetPort: 443nodePort: 30080selector:run: pod-pythontype: NodePort

更新完成后,如下图所示:

这意味着我们的内部的 service-python 这个 Service 现在也可以通过30080 端口从每个节点的内部和外部 IP 地址进行访问了。

集群内部的 Pod 也可以通过内网节点 IP 连接到 30080 端口。

运行 kubectl get svc 命令来查看这个 NodePort 的 Service,可以看到同样有一个 ClusterIP,只是类型和额外的节点端口不同。在内部,NodePort 服务仍然像之前的 ClusterIP 服务一样。

LoadBalancer

如果我们希望有一个单独的 IP 地址,将请求分配给所有的外部节点IP(比如使用 round robin),我们就可以使用 LoadBalancer 服务,所以它是建立在 NodePort 服务之上的。


一个 LoadBalancer 服务创建了一个 NodePort 服务,NodePort 服务创建了一个 ClusterIP 服务。我们也只需要将服务类型更改为 LoadBalancer 即可。

apiVersion: v1
kind: Service
metadata:name: service-python
spec:ports:- port: 3000protocol: TCPtargetPort: 443nodePort: 30080selector:run: pod-pythontype: LoadBalancer

LoadBalancer 服务所做的就是创建一个 NodePort 服务,此外,它还会向托管 Kubernetes 集群的提供商发送一条消息,要求设置一个指向所有外部节点 IP 和特定 nodePort 端口的负载均衡器,当然前提条件是要提供商支持。

现在运行 kubectl get svc 可以看到新增了 external-IP 和 LoadBalancer 的类型。

LoadBalancer 服务仍然像和以前一样在节点内部和外部 IP 上打开 30080 端口。

ExternalName

最后是 ExternalName 服务,这个服务和前面的几种类型的服务有点分离。它创建一个内部服务,其端点指向一个 DNS 名。

我们假设 pod-nginx 运行在 Kubernetes 集群中,但是 python api 服务在集群外部。

这里 pod-nginx 这个 Pod 可以直接通过 http://remote.server.url.com 连接到外部的 python api 服务上去,但是如果我们考虑到以后某个时间节点希望把这个 python api 服务集成到 Kubernetes 集群中去,还不希望去更改连接的地址,这个时候我们就可以创建一个 ExternalName 类型的 Service 服务了。

对应的 YAML 资源清单文件如下所示:

kind: Service
apiVersion: v1
metadata:name: service-python
spec:ports:- port: 3000protocol: TCPtargetPort: 443type: ExternalNameexternalName: remote.server.url.com

现在 pod-nginx 就可以很方便地通过 http://service-python:3000 进行通信了,就像使用 ClusterIP 服务一样,当我们决定将 python api 这个服务也迁移到我们 Kubernetes 集群中时,我们只需要将服务改为 ClusterIP 服务,并设置正确的标签即可,其他都不需要更改了。

到这里我们就用 13 张图将 Kubernetes 中的 Service 解释得明明白白清清楚楚真真切切了。

原文链接:https://medium.com/swlh/kubernetes-services-simply-visually-explained-2d84e58d70e5

本文转载自:「K8s 技术圈」,原文:https://tinyurl.com/y5v5hcuk,版权归原作者所有。欢迎投稿,投稿邮箱: editor@hi-linux.com。

你可能还喜欢

点击下方图片即可阅读

10 个冷门但又非常实用的 Docker 使用技巧

点击上方图片,打开小程序,加入「玩转 Linux」圈子

更多有趣的互联网新鲜事,关注「奇妙的互联网」视频号全了解!

http://www.lbrq.cn/news/2781091.html

相关文章:

  • 在哪个网站做一件代发靠谱吗怎么做一个网站平台
  • 毕业设计资源网站陕西seo
  • 做网站多少钱西宁君博专注怎样和政府交换友链
  • 厦门知名网站建设百度快照手机版
  • 西宁 专业网站建设重庆网站设计
  • 做图文链接网站武汉大学人民医院院长
  • Wordpress怎么配合HTML江西seo推广方案
  • A00网站建设windows优化大师和鲁大师
  • 网站代码规范网络公司有哪些
  • 做php网站用什么软件好免费引流在线推广
  • 安徽做网站哪家好搜索引擎营销的原理是什么
  • wordpress 百度cdnseod的中文意思
  • 阿里云做网站的代码每天新闻早知道
  • 江门网站建设公司开发网站用什么软件
  • 浦口区网站建设质量推荐今日新闻内容
  • 凡客建站免费的可以用多久郴州网络推广外包公司
  • 一个服务器下怎么做两个网站搜狗推广登陆
  • 武汉最大的广告公司网站seo推广
  • 深圳网站优化企业软文小故事200字
  • 首码项目推广网站电商平台怎么做
  • 北京模板网站开发全包seo入门培训学多久
  • 怎么做网站打赏农产品推广方案
  • 服务器分配网络提高网站访问速度b站怎么推广
  • 夸网站做的好怎么夸护肤品推广软文
  • 太原公司网站建设百度网盘云资源搜索引擎
  • 企业网站建设方案包含百度如何注册公司网站
  • 企业网站的建立与维护论文常德网站建设制作
  • www.qd2008 网站建设百度站长平台app
  • 昆明网站做的好的公司哪家好汕头seo推广外包
  • 海南省住房和城市建设厅网站青岛百度推广seo价格
  • STL模板库——string容器
  • 从繁琐到优雅:Java Lambda 表达式全解析与实战指南
  • RK3568 Linux驱动学习——Linux设备树
  • 【AI】算法环境-显卡、GPU、Cuda、NVCC和cuDNN的区别与联系
  • 构建情感智能体:下一代AI心理助手的架构与实践
  • 25. 能否创建一个包含可变对象的不可变对象