• 一个简单的例子理解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的原创文章,请关注公众号"汪子熙":

  • 相关阅读:
    poj 3528 (三维几何求凸包+凸包表面积)
    dijkstra模板(好像是斐波那契额堆优化,但我为什么看起来像优先队列优化,和spfa一样)
    最大空凸包模板
    ICPC 2017–2018, NEERC, Northern Subregional Contest St Petersburg, November 4, 2017 I题
    hdu 5248 序列变换
    hdu 2063(二分图模板测试)
    组合数
    85. Maximal Rectangle 由1拼出的最大矩形
    750. Number Of Corner Rectangles四周是点的矩形个数
    801. Minimum Swaps To Make Sequences Increasing 为使两个数组严格递增,所需要的最小交换次数
  • 原文地址:https://www.cnblogs.com/sap-jerry/p/9992326.html
Copyright © 2020-2023  润新知