kubernetes service资源

apiVersion: v1
kind: Service
metadata:
name: kubia
spec:
ports:
- port: 80
targetPort: 8080
selector:
app: kubia
kubectl get svc
 
kubectl exec kubia-id -- curl -s http://service_ip
双横缸代表着kubectl 命令项的结束,下面的是容器内部执行的命令
apiVersion: v1
kind: Service
metadata:
name: kubia
spec:
sessionAffinity: ClientIP
sessionAffinity属性默认为None,ClientIP 是保证特定客户端产生的请求每次都指向同一个pod
apiVersion: v1
kind: Service
metadata:
name: kubia
spec:
ports:
- name: http
port: 80
targetPort: 8080
- name: https
port: 443
target: 8443
selector:
app: kubia
标签选择器应用于整个服务,不能对每个端口做单独的配置
 
上面是采用端口号进行映射,还有一种方式给端口命名,这样在做映射的时候直接指向名称。好处是pod的端口随便改,而不用改service的配置如下:
kind: Pod
metadata:
name: kubia
spec:
containers:
- name: kubia
ports:
- name: http
containerPort: 8080
- name: https
containerPort: 8443 apiVersion: v1
kind: Service
spec:
ports:
- name: http
port: 80
targetPort: http
- name: https
port: 443
targetPort: https
selector:
app: kubia
kubectl delete po --all 删除所有pod ,而不管pod的id
kubectl delete all --all all代表所有资源,--all代表所有资源对象
 
backend-database.default.svc.cluster.local
backend-database 服务名称
default 命名空间
svc.cluaster.local是在所有集群本地服务名称中使用的可配置集群域后缀
 
 
kubectl exec -ti kubia-3inly bash 运行bash很像 docker exec -ti id bash
不要ping kubernetes中创建的服务名称,这是因为服务的ip是一个虚拟的IP,只有在与服务端口结合时才有意义
 
 
endpoint资源
kubernetes service不仅可以暴露pod给外部,同样也可以把外部服务创建为服务让内部pod进行访问。服务并不是和pod直接相连的,有一种资源-endpoint介于两者之间。
endpoint资源就是暴露一个服务的IP地址和端口的列表,endpoint资源和其他kubernetes资源一样,所以可以使用kubectl info 来获取它的基本信息
kubectl describe svc kubia 执行此命令能看到endpoint资源
kubectl get endpoints kubia
我知道在创建service时定义了selector pod选择器,但在重定向传入连接时不会直接使用它。
选择器用于构建IP和端口列表,然后存储在EndPoint资源中。当客户端连接到服务时,服务代理选择这些IP和端口对中的一个,并将传入连接重定向到该位置监听的服务器。
 
EndPoint是一个单独的资源,而不是service的属性,所以我们可以单独的创建endpoint资源对象。
我们在创建service时不声明pod选择器就不会创建endpoint
apiVersion: v1
kind: Service
metadata:
name: external-service
spec:
ports:
- port: 80
这里并没有定义selector
下面我们手动创建endpoint
apiVersion: v1
kind: Endpoints
metadata:
name: external-service 这里的名称一定和service的一致
subsets:
- addresses:
- ip: 1.1.1.1
- ip: 2.2.2.2
ports:
- port: 80 这里的port是endpoint的目标端口,是service中的targetPort
以上就做了一个将外部服务通过service让内部pod可以访问。
 
还有一种简单的方式,给外部服务创建一个别名服务。
apiVersion: v1
kind: Service
matedata:
name: external-service
spec:
type: ExternalName 代码的type被设置成ExternalName
externalName: someapi.somecompany.com 实际服务的完全限定名
ports:
- port: 80
内部就可以使用external-service来访问服务了
 
 
kubectl get po --all-namespaces 非常好用

k8s 之service资源介绍(三)的更多相关文章

  1. 容器编排系统k8s之Service资源

    前文我们了解了k8s上的DemonSet.Job和CronJob控制器的相关话题,回顾请参考:https://www.cnblogs.com/qiuhom-1874/p/14157306.html:今 ...

  2. Kubernetes的service资源介绍

    service 三种工作模式:userspace.iptables.ipvs 删除手动创建的service [root@master ~]# kubectl delete svc redis serv ...

  3. k8s之Service资源

    1.Service概述 service是kubernetes中最核心的资源对象之一,service和pod之间是通过Label串起来,相同的Service的pod的Label是一样的.同一个servi ...

  4. K8s Service原理介绍

    Service的工作方式有三种: 第一种: 是Userspace方式 如下图描述, Client Pod要访问Server Pod时,它先将请求发给本机内核空间中的service规则,由它再将请求, ...

  5. K8s - Kubernetes重要概念介绍(Cluster、Master、Node、Pod、Controller、Service、Namespace)

    K8s - Kubernetes重要概念介绍(Cluster.Master.Node.Pod.Controller.Service.Namespace)       Kubernetes 是目前发展最 ...

  6. K8S(02)管理核心资源的三种基本方法

    系列文章说明 本系列文章,可以基本算是 老男孩2019年王硕的K8S周末班课程 笔记,根据视频来看本笔记最好,否则有些地方会看不明白 需要视频可以联系我 管理k8s核心资源的三种基本方法: 目录 系列 ...

  7. Kubernetes-Service介绍(三)-Ingress(含最新版安装踩坑实践)

    前言 本篇是Kubernetes第十篇,大家一定要把环境搭建起来,看是解决不了问题的,必须实战. Kubernetes系列文章: Kubernetes介绍 Kubernetes环境搭建 Kuberne ...

  8. k8s通过Service访问Pod

    如何创建服务 1.创建Deployment #启动三个pod,运行httpd镜像,label是run:mcw-httpd,Seveice将会根据这个label挑选PodapiVersion: apps ...

  9. Puppet自动化运维-资源介绍篇(4)

    1.什么是资源? 资源是Puppet最基础的元素,每个资源的定义都具有标题,类型,以及一系列的属性. 资源定义有如下的特性:   (1) Puppet使用title在编译时区分每个资源,使用命名变量在 ...

随机推荐

  1. 图的遍历 | 1034 map处理输入数据,连通块判断

    这题写得比较痛苦.首先有点不在状态,其次题目比较难读懂. “Gang”成立的两个条件:①成员数大于两个  ②边权总和大于阈值K 首先,在录数据的时候通过map或者字符串哈希建立string到int的映 ...

  2. TensorFlow分布式训练MNIST分类器

    http://c.biancheng.net/view/2004.html 本节以分布式方式训练完整的 MNIST 分类器. 该案例受到下面博客文章的启发:http://ischlag.github. ...

  3. javaWeb项目配置自定义404错误页

        1.情景展示 为了隐藏tomcat版本信息以及显示更友好的错误信息提示,如何将404的错误跳转到指定页面? 2.解决方案 第一步:修改项目的web.xml 将如下代码添加到</web-a ...

  4. Error Code: 1175. You are using safe update

    使用MySQL执行update的时候报错:Error Code: 1175. You are using safe update mode and you tried to update a tabl ...

  5. Alpha冲刺(9/10)——2019.5.1

    作业描述 课程 软件工程1916|W(福州大学) 团队名称 修!咻咻! 作业要求 项目Alpha冲刺(团队) 团队目标 切实可行的计算机协会维修预约平台 开发工具 Eclipse 团队信息 队员学号 ...

  6. AQS1---走向稳定态

    AQS的思想(稳定思想):即使确定了正常节点,这个节点也可能下一秒异常,即使找到了正常节点,这个节点可能只是异常status=0/-1的节点,这些都不要紧,都只是在自己旋转‘生命周期’里面和自己所看到 ...

  7. 【转】Selenium 报错:Element is not clickable at point的解决办法

    天一同学在写Selenium Java脚本时遇到一个问题,登录进入系统之后,要点击左侧的一个菜单,但是执行到该语句时报下面的错误: Firefox中报错如下:org.openqa.selenium.E ...

  8. Springboot Actuator之十二:actuator aop

    前言spring 中aop是一个核心概念,spring boot 是如何实现自动化配置的?现在我们就来分析一下 解析spring boot 中自动化配置是读取/META-INF/spring.fact ...

  9. Scala Type Parameters 2

    类型关系 Scala 支持在泛型类上使用型变注释,用来表示复杂类型.组合类型的子类型关系间的相关性 协变 +T,变化方向相同,通常用在生产 假设 A extends T, 对于 Clazz[+T],则 ...

  10. react 中 Modal 多次使用且带参数不同实现

    一.举例:对于 echatrs 的柱子分别需要弹窗 带参数 触发弹窗出现事件 showModalhref myChart.on('click', (params) => { switch (pa ...