k8s的service简述
k8s向集群外部暴露端口的3种方式:
1.service->nodePort :仅暴露一个宿主机端口,用于集群外部访问,因为此操作被写入各个节点的iptables或ipvs规则当中,可以用任意一个节点的IP+端口号访问。
2.hostNetwork :暴露宿主机IP,只可以通过此宿主机IP访问,慎重使用。
3.hostPort->contianerPort :宿主机和容器的端口映射,只能访问被指定的容器和宿主机。
kbectl的命令可分为三类:
1.陈述式命令-->(指明对象和要求)
2.陈述式对象配置--> create(用json或yaml格式定义我们期望状态的资源清单)
3.声明式对象配置--> apply (可以对一个yaml资源清单多次进行apply)
pod相当于容器的有一个外壳,对容器的抽象形成的pod,一个pod可以运行1个到多个容器,并且,同一pod下的容器共享一组网络名称空间
pod中即使看上去是运行一个容器,其实不然,它还包括除了这个容器外的基础架构的容器,当原始方式去部署k8s时,用到的基础架构的容器对应的镜像是pause,可以理解为一直是暂停状态。
pod中基础架构的容器pause,为此pod中的主要容器主动提供网络名称空间,数据卷等功能。
一个pod中通常最好一个主容器。
pod中如果需要实现紧密容器的服务,可以有两种方式,1,sidecar(边车,辅助,侧兜摩托)2,proxy代理istio
同一pod下的容器能共享挂载卷
查看pod标签:kubectl get pod -n namespace --show-labels
Pod添加标签:kubectl label pod ngx-dep app=myapp / kubectl label pod ngx-dep --overwrite {app=myapp,word=shit,mod=good}
Pod删除标签:kubectl label pod ngx-dep app- / kubectl label pod ngx-dep word- /kubectl label pod ngx-dep mod-
Pod筛选标签:kubectl get pod -l key / kubectl get pod -l key=value / kubectl get -l key=value -L key / kubectl get pod -l key1,key2,keyn
service的模型:
userspace;iptables;ipvs
1.10-的版本是userspace/iptables
1.10+的版本是iptables/ipvs 一般不指定的话会自动降级到iptables,若想使用ipvs则在搭建环境时需要在/etc/sysconfig/kubelet文件中添加字段为:
KUBE_PROXY_MODE=ipvs
service的解析是紧密依赖于coredns的
service 服务方式:
clusterIP :供集群内布访问使用
nodeport :供集群外部访问使用 client->NodeIP:NodePort->clusterIP:servicePort->podIP:ContainerPort
externalIPs :用于使pod访问集群外部资源
loadBalancerIP :用于云平台环境中,集群外负载均衡调度
NoclusterIP:即clusterIP:后面参数为空,则为headless,无头service,就是说这个服务的IP是它所有后端pod的IP:ServiceName->PodIP
clusterIP 例:
apiVersion: v1
kind: Service
metadata:
name: myapp-svc
namespace: default
spec:
selector:
app: myapp
release: canary
clusterIP: 10.99.99.99
type: ClusterIP
ports:
- port: #service暴露的端口(iptables/ipvs规则)
targetPort: #pod的端口
nodeport 例:
apiVersion: v1
kind: Service
metadata:
name: myapp-svc-headless
namespace: default
spec:
selector:
app: myapp
release: canary
clusterIP: 10.97.97.97
sessionAffinity: ClientIP #这个选项作用是,把来自于同一个客户端的请求,始终发往同一个后端pod
type: NodePort
ports:
- port:
targetPort:
nodePort: #工作节点上对外暴露的端口
无头headless service 例:一般用于对后端pod资源的调度。
apiVersion: v1
kind: Service
metadata:
name: myapp-svc-
namespace: default
spec:
selector:
app: myapp
release: canary
clusterIP: None
ports:
- port:
targetPort:
k8s的service简述的更多相关文章
- Kubernetes K8S之Service服务详解与示例
K8S之Service概述与代理说明,并详解所有的service服务类型与示例 主机配置规划 服务器名称(hostname) 系统版本 配置 内网IP 外网IP(模拟) k8s-master Cent ...
- 容器编排系统k8s之Service资源
前文我们了解了k8s上的DemonSet.Job和CronJob控制器的相关话题,回顾请参考:https://www.cnblogs.com/qiuhom-1874/p/14157306.html:今 ...
- k8s 无头service 方式向内发布
k8s 无头service 是指 clusterIP 为 None 的service 案例,假定有一个 deployment,containerPort 端口80,同时还被打上 python=mywe ...
- 记录一起k8s的service服务名解析灵异事件
故障现象: 基于alpine 3.7的镜像,构建的spring boot服务及eureka服务器. 在使用deployment和service文件部署到k8s集群之后, 在不同的pod内部,访问ser ...
- k8s之Service
一.概述 在k8s中暴露Service访问(无论内部还是外部),都要经过kube-proxy: 如下图:
- k8s的service
1.service简介 本节开始学习 Service.我们不应该期望 Kubernetes Pod 是健壮的,而是要假设 Pod 中的容器很可能因为各种原因发生故障而死掉.Deployment 等 c ...
- k8s之Service资源
1.Service概述 service是kubernetes中最核心的资源对象之一,service和pod之间是通过Label串起来,相同的Service的pod的Label是一样的.同一个servi ...
- K8S中Service
Service 的概念Kubernetes Service 定义了这样一种抽象:一个 Pod 的逻辑分组,一种可以访问它们的策略 —— 通常称为微服务. 这一组 Pod 能够被 Serv ...
- linux运维、架构之路-K8s通过Service访问Pod
一.通过Service访问Pod 每个Pod都有自己的IP地址,当Controller用新的Pod替换发生故障的Pod时,新Pod会分配到新的IP地址,例如:有一组Pod对外提供HTTP服务,它们的I ...
随机推荐
- mediawiki登录时第一次会跳回登录页面,第二次才能登录成功
原因是:LocalSetting.php中的$wgServer属性使用的是ip,改为域名后成功解决问题 补充:改为域名后使用ip访问会出现第一次登录跳回登录界面的情况,应该根据实际情况来设置$wgSe ...
- (转)rename命令详解
rename命令详解: 原文:http://www.cnblogs.com/amosli/p/3491649.html 对文件重命名是常用的操作之一,一般对单个文件的重命名用mv命令,如: amosl ...
- C# 多线程之线程控制
方案一: 调用线程控制方法.启动:Thread.Start();停止:Thread.Abort();暂停:Thread.Suspend();继续:Thread.Resume(); private vo ...
- wcf_消息通信模式(下) 双工通讯
原文:[老老实实学WCF] 第十篇 消息通信模式(下) 双工 第十篇 消息通信模式(下) 双工 在前一篇的学习中,我们了解了单向和请求/应答这两种消息通信模式.我们知道可以通过配置操作协定的IsOne ...
- java递归展示树形图代码实现以及遇到的问题
我最近写到了一个项目中用到了树形图,不得不说这个树形图是真的扯淡: 我用到的是layui中的树形图,再展示数据过程中遇到了很多的问题,废话不多说,直接贴代码. 一.调用排序接口,对数据进行排序. 二. ...
- java基础知识——Java的定义,特点和技术平台
(作者声明:对于Java编程语言,很多人只知道怎么用,却对其了解甚少.我也是其中一员.所以菜鸟的我,去查询了教科书以及大神的总结,主要参考了<Java核心技术>这本神作.现在分享给大家!) ...
- linux系统的安全小知识
最近安装linux虚拟机,出了几个小问题:1. 只有root用户 2.ftp连接不上 3.ssh连接虚拟机如何免密 1.创建用户 useradd –d /usr/sam -m sam 创建用 ...
- 自己动手实现STL 03:内存基本处理工具(stl_uninitialized.h)
一.前言 前面两篇已经编写了内存配置器和建构解构工具函数.这里,就准备编写并介绍下内存基本处理工具函数.比如uninitialized_copy().uninitialized_copy和 unini ...
- logback的加载过程
使用logback-classic.jar时,启动应用后,logback按照以下顺序进行扫描: 1.在系统配置文件System Properties中寻找是否有logback.configuratio ...
- meterpreter > run post/windows/capture/keylog_recorder
meterpreter > migrate 1548[*] Migrating to 1548...[*] Migration completed successfully.meterprete ...