`
JerryWang_SAP
  • 浏览: 1029576 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

一个简单的例子理解Kubernetes的三种IP地址类型

阅读更多

很多Kubernetes的初学者对Kubernetes里面三种不同的IP地址和工作机制理解得不是很清楚。

本文我们通过一个最简单的例子来学习。

用如下命令行创建一个基于nginx的deployment:

kubectl run nginx --image=nginx:maxline

用kubectl get deploy查看成功生成的名为nginx的deployment:

 

此时这个deployment里的nginx pod还无法对外界提供服务。

我们创建一个service让外界能够消费。使用命令行创建这样的一个service:

kubectl expose deployment nginx --type=LoadBalancer --port=80 --target-port=80

type的类型选择为LoadBalancer, --port指定的是80端口,意思是这个service对外界暴露出来的服务端口是80,--target-port=80,这个端口是pod内部的nginx docker容器提供服务的工作端口,默认为80。这里实际上建立了向外界开发的80端口同nginx容器内部端口的一个映射关系。

 

执行完毕后,我们调用下面的命令行,看到了创建的service的Cluster IP和External IP。

 

其中external IP很好理解,这个service通过external IP加上我们前面介绍的被映射到80端口向外界提供服务:

浏览器里输入External IP http://35.241.173.27:80, 能成功访问nginx服务器的index.html:

 

而我们通过Service的Cluster IP是无法访问这个Service提供的功能的。

我们知道Kubernetes里的所有pod都可以彼此通信,而不需要通过网络地址转换(Network Address Translation-NAT),所有的节点也可以与所有的pod通信。而Service的Cluster IP,是一个内部的IP地址,专门用于同Cluster内部的节点或者pod通信。同外界通信,还是通过External IP进行。

NodePort

再试试NodePort。

kubectl expose deployment nginx --type=NodePort --port=80 --target-port=80

注意看下图的PORT栏下面显示的类型为NodePort的端口:31375

这个端口号是Kubernetes expose命令自动生成的,范围在30000到32767之间。如果需要修改,可以编辑api server的配置文件:/etc/kubernetes/apiserver:

 
 

有了这个端口号,我们随便使用一个node的IP地址,后面拼接上:31375即是外部可以消费的完整地址。

使用命令行kubectl get nodes -o wide, 在结果里选择任意节点的External-IP,后面加上:31375:

 

测试:

http://146.148.23.183:31375/

测试通过。

 

Pod的端口转发功能

值得一提的是,有时我们出于测试的目的,需要一种简单的办法查看一个pod是否能正常提供服务。如果每次通过kubectl的方式创建service就太麻烦了。

这里介绍一种简单的办法:pod的端口转发功能(port forward)。

比如我们想测试下图get pods返回的第一个pod的功能,名称为nginx-6f754dd4b9-74jdn:

 

执行命令行 kubectl port-forward pod/nginx-6f754dd4b9-74jdn 8080:80

看到提示信息Forwarding from 127.0.0.1:8080 -> 80, 意思是把当前主机的8080端口映射到nginx pod的80工作端口:

 

最后,就能够通过localhost:8080直接访问nginx pod提供的服务了:

 

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

 
0
0
分享到:
评论

相关推荐

    仿windows ip地址功能例子

    这个"仿Windows IP地址功能例子"提供了一个模拟Windows系统显示IP地址功能的示例代码,旨在帮助开发者理解和实现类似的功能。下面我们将深入探讨IP地址、IP地址验证以及如何在编程中实现这些功能。 首先,IP地址...

    使用Hash散列从海量IP地址中查找IP地址

    标题中的“使用Hash散列从海量IP地址中查找IP地址”是一个关于数据结构与算法的实践应用,主要涉及如何高效地在大量IP地址中进行查找操作。在这个问题中,使用了哈希(Hash)技术,它是一种将任意大小的数据映射到...

    IP地址原理,IP地址原理,IP地址原理

    根据IP地址的分配和网络规模,IP地址被分为两种主要类型:IPv4和IPv6。IPv4地址由32位组成,最多可以提供约43亿个地址,而IPv6则扩展到了128位,理论上可以提供几乎无限数量的地址。 IP地址的分配是由国际组织ICANN...

    kubernetes权威指南例子代码,k8s 例子 hello-world

    这个例子展示了如何在Kubernetes集群中创建、运行并管理一个简单的应用。具体步骤包括: 1. **定义YAML配置文件**:在Kubernetes中,应用的配置信息通常写入YAML或JSON格式的文件。"hello-world"的YAML文件会包含一...

    ip地址范围判断

    2. **IP地址范围判断**:在编程或网络管理中,我们可能需要检查一个IP地址是否落在特定的IP地址范围内,比如确定某个IP是否属于某个网络段。这可以通过将IP地址转换为整数比较其数值范围来实现,或者使用IP地址解析...

    IP地址规划与分配

    3. **VLSM(Variable Length Subnet Masking)**:这是一种允许使用不同长度子网掩码的技术,根据需要动态调整子网大小,避免浪费IP地址。 4. **IP地址分配**:合理分配IP地址至关重要,要考虑网络的增长、设备类型...

    桌面显示IP地址

    1. **IP地址类型**:IP地址分为IPv4和IPv6两种类型。IPv4地址由32位二进制数组成,通常以点分十进制的形式表示,例如192.168.1.1。IPv6则是为了应对IPv4地址耗尽而提出的,由128位二进制数组成,通常用冒号分隔的...

    IP地址教学课件.PPT演示.rar

    - A类、B类、C类地址:详细讲述了这三种基本的IP地址类别,包括它们的地址范围和可用主机数量。 - D类和E类地址:提及了特殊用途的D类多播地址和保留的E类地址。 5. **特殊的IP地址** - 回环地址:介绍了...

    一个简单的获取IP地址的程序

    IP地址通常分为IPv4和IPv6两种类型,前者由四个用点分隔的十进制数字组成,如192.168.1.1,后者则采用了更长的128位地址格式。 要编写一个获取IP地址的程序,我们可以使用不同的编程语言,这里以Python为例,因为其...

    最全ip地址MYSQL数据库

    IP地址(Internet Protocol Address)是由32位二进制组成的,通常分为IPv4和IPv6两种类型。IPv4地址由四个十进制数字组成,每个数字介于0到255之间,用点分隔,例如192.168.0.1。IPv6则采用128位地址,格式更为复杂...

    中学信息技术- IP地址初识课件

    举例来说,如果一个主机的IP地址是125.17.23.206,根据IP地址的分类规则,我们可以看出它的第一个字节是125,落在B类地址的范围内,因此这是一个B类IP地址。网络号由前两个字节组成,即125.17,意味着网络号是125*...

    IP地址库(Excel版)

    IP地址分为IPv4和IPv6两种类型。IPv4地址由32位二进制组成,通常以点分十进制的形式表示,如192.168.0.1。IPv6则扩展到了128位,采用冒号十六进制表示,如2001:0db8:85a3:0000:0000:8a2e:0370:7334。 IP地址库通常...

    kubernetes应用学习手册

    例如,一个简单的YAML文件定义了包含一个容器的Pod,该容器运行一个简单的Web服务器。一旦定义文件被创建,就可以使用kubectl工具来管理这些Pods。 除了Pod之外,Kubernetes还提供了其他资源类型,如Replication...

    VB6.0获取网卡的内网与外网IP地址的例子.rar

    这个"VB6.0获取网卡的内网与外网IP地址的例子"压缩包提供了一个实例代码,帮助初学者理解和实现这一功能。 首先,我们需要理解什么是内网IP和外网IP。内网IP(也称私有IP)是设备在局域网内部使用的IP地址,通常由...

    kubernetes client python文档

    Kubernetes Python 客户端是一个强大的工具,用于简化与 Kubernetes 集群的交互过程。通过本文档,开发者可以了解到如何安装和使用这个客户端,以及如何为其贡献代码。文档中的示例代码和详细说明使得新手也能轻松...

    IP地址在线查询系统

    标题中的“IP地址在线查询系统”是一个用于查找和解析...总的来说,"IP地址在线查询系统"是一个实用的工具,能够帮助用户快速获取和理解网络上的IP地址信息,对于网络管理、故障排查和一般网络知识的学习都有很大帮助。

    Kubernetes in Action pdf

    接下来,读者会了解Services,这是Kubernetes提供的一种抽象,用于定义一组Pods的逻辑集合,并提供一个稳定的网络标识和负载均衡。通过Service,应用可以与Pods交互,而无需关心Pods的具体生命周期或IP变化。 部署...

    VBS显示IP地址

    在WMI中,IP地址被表示为`IPLIST_STRING`类型的数组,每个元素都是一个IP地址。示例如下: ```vbscript Option Explicit Dim objNetwork Set objNetwork = WScript.CreateObject("WScript.Network") Dim ...

    5分钟玩转Kubernetes

    3. **服务(Service)**:定义了一种方式,通过固定的DNS名称或IP地址访问Pods,即使Pods在集群中动态移动或重启。 4. **Deployment**:用于定义和管理Pod副本集,确保指定数量的Pod始终运行并可扩展。 5. **...

Global site tag (gtag.js) - Google Analytics