第六章 通过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 ...
随机推荐
- Ubuntu12.04 中文输入法设置
1.ibus输入法 Ubuntu系统安装后已经自带了ibus输入法,在英语环境下默认不启动. 配置ibus自动启动可 以在ubuntu系统菜单上选择System(系统)--- Preferences( ...
- LaTex中插入大括号的多行公式
由于近期要发表论文,不得不恶补LaTex.现在需要插入带大括号的多行公式,效果如下: LaTex编辑如下: \begin{equation} \label{eq6} [x_{i}]=\left\{ \ ...
- 在初次安vs2008时设置的为C#现在怎么将其改为其他类型的界面
如将C#改成C++, 工具 -> 导入和导出设置 -> 重置所有设置 -> 否,仅重置设置,从而覆盖我的当前设置 -> 重新选一个设置 -> 完成 选择完毕后,如新建MF ...
- SpringMVC札集(05)——SpringMVC参数回显
自定义View系列教程00–推翻自己和过往,重学自定义View 自定义View系列教程01–常用工具介绍 自定义View系列教程02–onMeasure源码详尽分析 自定义View系列教程03–onL ...
- 【javascript】利用jquery ajaxPrefilter防止ajax重复提交
利用jquery ajaxPrefilter中断请求 var pendingRequests = {}; $.ajaxPrefilter(function( options, originalOpti ...
- typecho去index.php
RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} ! ...
- BZOJ2303: [Apio2011]方格染色 【并查集】
Description Sam和他的妹妹Sara有一个包含n × m个方格的表格.她们想要将其的每个方格都染成红色或蓝色.出于个人喜好,他们想要表格中每个2 × 2的方形区域都包含奇数个(1 个或 3 ...
- 将 async/await 异步代码转换为安全的不会死锁的同步代码
在 async/await 异步模型(即 TAP Task-based Asynchronous Pattern)出现以前,有大量的同步代码存在于代码库中,以至于这些代码全部迁移到 async/awa ...
- python selenium 开发环境配置
selenium是一个web测试应用框架也可以拿来做爬虫. 1.安装selenium模块 pip install -U selenium 2.安装selenium模块后需要有相应的浏览器驱动 A.使用 ...
- java 线程池--ExecutorService
一 Java通过Executors提供四种线程池,分别为: newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程. new ...