Kubernetes | Service

29 篇文章 0 订阅
27 篇文章 0 订阅

                        --昨夜西风凋碧树,独上高楼,望尽天涯路

  • Service小试牛刀

Controller会通过动态创建和销毁Pod来保证整体的健壮性。由于每个Pod都有自己的IP地址,当Controller用新的Pod替代发生故障的Pod时,新Pod会分配到新的IP地址,这样由于IP变化就导致了客户端无法访问该Pod。

Kubernetes通过Service来解决这个问题。

创建一个Deployment:

启动三个Pod,label是run:httpd,Service将会用这个label来挑选Pod

Pod分配了各自的IP,这些IP只能被Kubernetes Cluster中的容器和节点访问

创建Service:

kind指定类型为Service,selector选择label为run:httpd,port指定Service的端口,targetPort指定Pod的端口

运行Service:

该service分配到10.105.68.228这个Ip

访问成功,并且通过kubectl describe查看service发现内部的Endpoint映射到了3个Pod的80端口。

  • DNS访问Service

查看当前的service

当前环境采用的是coredns每当有新的Service被创建,DNS服务器会添加该Service的DNS记录。Cluster中的Pod可以通过<SERVICE_NAME>.<NAMESPACE_NAME>访问Service

启动一个临时的busybox来测试,通过Service name来访问pod(注意,由于没有指定namespace默认都使用的是default namespace,所以不加.namespace来访问。):

加上namespace之后发现无法连接,必须加namespace全名才可以正常访问:

新建配置文件,可以在一个配置文件中同时部署,只需要用---隔开就可以。指定namespace为kube-public,为Pod配置Service:

运行应用,并且查看Pod和Service(由于制定了namespace,查看的时候必须加namespace,否则会去找default):

在default命名空间下运行busybox应用,并且测试DNS访问:

 

 

  • 外网访问Service

Kubernetes提供了多种类型的Service,默认是ClusterIP

1)ClusterIP

Service通过Cluster内部的IP对外提供服务,只有Cluster内的节点和Pod可访问。

2)NodePort

Service通过Cluster节点的静态端口对外提供服务。Cluster外部可以通过<NodeIP>:<NodePort>访问Service

3)LoadBalancer

Service利用cloud provider特有的load balancer对外提供服务(目前支持cloud provider有GCP、AWS等)。

新建Service应用和pod应用:

查看当前Pod和Service,并且通过host ip查看发现外网访问成功:

上面的方式是Kubernetes随机从30000~32767中间分配一个可用的端口,还可以指定host端口,修改配置文件:

        nodePort:host主机的端口

        port:Service的端口

        targetPort:Pod的端口

运行新的Service,并且查看、测试:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值