第六章 通过Service访问Pod(上)
不应该直接使用Pod的ID地址作为对外提供服务的接口,应为一旦Pod重启,IP地址就变化了,解决方案是使用Service。
6.1 创建Service
K8s service从逻辑上代表了一组Pod,具体是哪些Pod则由label来挑选的。
service有自己的IP,而且这个IP是不变的,客户端只需要访问Service的IP,K8s负责建立和维护service和Pod的映射关系。无论Pod如何变化,对客户端无影响。
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: httpd
spec:
replicas:
template:
metadata:
labels:
run: httpd # 定义label给service用
spec:
containers:
- name: httpd
image: httpd
ports:
- containerPort: 80 # 容器对外暴露的端口
部署之后,可以直接通过IP地址(IP地址是随机的)访问Pod:
kubeusr@GalaxyKubernetesMaster:~$ kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE
httpd-749bf8c6f4-d86vf / Running 5m 10.244.1.209 galaxykubernetes02
httpd-749bf8c6f4-lwp5g / Running 5m 10.244.2.113 galaxykubernetes03
httpd-749bf8c6f4-pldb4 / ContainerCreating 5m <none> galaxykubernetes01
kubeusr@GalaxyKubernetesMaster:~$ curl 10.244.1.209:
<html><body><h1>It works!</h1></body></html>
接下来定义service,并部署,
apiVersion: v1
kind: Service
metadata:
name: httpd-svc # service 名字
spec:
selector:
run: httpd # selector指明挑选 label为run:httpd 的Pod作为Service的后端。
ports:
- protocol: TCP
port: 8080 # service的端口; service的8080端口映射到Pod的80端口
targetPort: 80 # pod的端口
如下,httpd-svc分配到一个CLUSTER-IP 10.101.103.107。 可以通过该IP访问后端的httpd Pod
kubeusr@GalaxyKubernetesMaster:~$ kubectl get service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
httpd-svc ClusterIP 10.101.103.107 <none> /TCP 6s
kubernetes ClusterIP 10.96.0.1 <none> /TCP 127d
kubeusr@GalaxyKubernetesMaster:~$ curl 10.101.103.107:8080
<html><body><h1>It works!</h1></body></html>
通过kubectl describe可以查看httpd-svc与pod的对应关系:
kubeusr@GalaxyKubernetesMaster:~$ kubectl describe service httpd-svc
Name: httpd-svc
Namespace: default
Labels: <none>
Annotations: kubectl.kubernetes.io/last-applied-configuration={"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"name":"httpd-svc","namespace":"default"},"spec":{"ports":[{"port":,"protocol":"TC...
Selector: run=httpd
Type: ClusterIP
IP: 10.101.103.107
Port: <unset> /TCP
TargetPort: /TCP
Endpoints: 10.244.1.209:80,10.244.2.113:80 # 罗列了三个Pod的id地址和端口。
Session Affinity: None
Events: <none>
第六章 通过Service访问Pod(上)的更多相关文章
- 第六章 通过Service访问Pod(中)
6.2 Cluster IP 底层实现 Cluster IP 是一个虚拟IP,是由K8s节点上的iptables规则管理的. 使用类似轮询的方法访问Pod. 6.3 DNS 访问Service 在Cl ...
- 第六章 通过Service访问Pod(下)
6.4 外网如何访问service (1)ClusterIp: Service通过Cluster内部的IP对外提供服务,只有Cluster内的节点和Pod可以访问,这是默认的Service类型. (2 ...
- linux运维、架构之路-K8s通过Service访问Pod
一.通过Service访问Pod 每个Pod都有自己的IP地址,当Controller用新的Pod替换发生故障的Pod时,新Pod会分配到新的IP地址,例如:有一组Pod对外提供HTTP服务,它们的I ...
- k8s通过service访问pod(五)--技术流ken
service 每个 Pod 都有自己的 IP 地址.当 controller 用新 Pod 替代发生故障的 Pod 时,新 Pod 会分配到新的 IP 地址.这样就产生了一个问题: 如果一组 Pod ...
- k8s通过service访问pod(五)
service 每个 Pod 都有自己的 IP 地址.当 controller 用新 Pod 替代发生故障的 Pod 时,新 Pod 会分配到新的 IP 地址.这样就产生了一个问题: 如果一组 Pod ...
- 通过 Service 访问 Pod - 每天5分钟玩转 Docker 容器技术(136)
本节开始学习 Service.我们不应该期望 Kubernetes Pod 是健壮的,而是要假设 Pod 中的容器很可能因为各种原因发生故障而死掉.Deployment 等 controller 会通 ...
- 通过 Service 访问 Pod
我们不应该期望 Kubernetes Pod 是健壮的,而是要假设 Pod 中的容器很可能因为各种原因发生故障而死掉.Deployment 等 controller 会通过动态创建和销毁 Pod 来保 ...
- 通过 Service 访问 Pod【转】
本节开始学习 Service.我们不应该期望 Kubernetes Pod 是健壮的,而是要假设 Pod 中的容器很可能因为各种原因发生故障而死掉.Deployment 等 controller 会通 ...
- k8s通过Service访问Pod
如何创建服务 1.创建Deployment #启动三个pod,运行httpd镜像,label是run:mcw-httpd,Seveice将会根据这个label挑选PodapiVersion: apps ...
随机推荐
- New Concept English there (2)Typing speed exercise
typing speed (11words/ seconds) our vicar ia always rising money for one cause or another, but he ha ...
- (转)Mahout Kmeans Clustering 学习
一.Mahout命令使用 合成控制的数据集 synthetic_control.data 可以从 此处下载,总共由600行X60列double型的数据组成, 意思是有600个元组,每个元组是一个时间序 ...
- Kotlin Reference (一) Basic Syntax
什么是Kotlin Kotlin翻译成中文叫"靠他灵",它是由JetBrains公司发明的一种基于JVM的编程语言,目前Google宣布kotlin为Android开发的官方语言. ...
- 深度学习(六十八)darknet使用
这几天因为要对yolo进行重新训练,需要用到imagenet pretrain,由于网络是自己设计的网络,所以需要先在darknet上训练imagenet,由于网上都没有相关的说明教程,特别是图片路径 ...
- Vue学习笔记 ——v-html
v-html: 在网页中,后台传来的json数据中包含html标签,将该json数据绑定到Vue.js中对象中,对该对象进行for循环,发现数据中的html标签不能被解析,而是当作字符显示出来 解决: ...
- Web框架Django
Django是一个开放源代码的Web应用框架,由Python写成. 1. Ubuntu Django安装: pip install django 2. django-admin.py创建一个项目 dj ...
- 上传IOS项目和版本更新流程图
上传IOS项目和版本更新流程图 必备IDP证书和distribution证书(第一个证书是真机部署测试时用到的,后者证书是发布时需要用到的,缺一不可). 我就说说接下来应该做的流程.在你保证拥有以上两 ...
- 深入理解java虚拟机-第13章-线程安全与锁优化
第十三章 线程安全与锁优化 线程安全 java语言中的线程安全 1 不可变.Immutable 的对象一定是线程安全的 2 绝对线程安全 一个类要达到不管运行时环境如何,调用者都不需要额外的同步措施, ...
- JS监听键盘事件(回车键)
JS监听某个输入框 //回车事件绑定 $('#search_input').bind('keyup', function(event) { if (event.keyCode == "13& ...
- 在父容器div中图片下方有一条空隙问题
问题:<div><img src="mm1.jpg"></div> 然后,表现就是一张图片呈现,类似下面这样: 恩,看上去很正常,一切都是理所当 ...