#Service

Service为Pod提供4层负载均衡, 访问 -> Service -> Pod组

#4种类型

  • ClusterIP 默认,分配一个VIP,只能内部访问
  • NodePort ClusterIP基础上,在每个节点绑定一个对外访问端口
  • LoadBalancer 在NodePort基础上,外部负载均衡器转发到NodePort
  • ExternalName 集群外部的服务引入到集群内部来,集群内部使用

#代理模式

  • iptables 代理模式

  • ipvs 代理模式

    #ips轮询模式
    rr 轮询调度
    lc 最小连接数
    dh 目标哈希
    sh 源哈希
    sed 最短期望延迟
    nq 不排队调度
#svc-demo.yaml

#Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp-deploy
namespace: default
spec:
replicas: 3
selector:
matchLabels:
app: myapp
release: s1
template:
metadata:
labels:
app: myapp
release: s1
env: test
spec:
containers:
- name: myapp
image: alivv/nginx:node
imagePullPolicy: IfNotPresent
ports:
- name: http
containerPort: 80 ---
#ClusterIP
apiVersion: v1
kind: Service
metadata:
name: svc-ip
namespace: default
spec:
type: ClusterIP
selector:
app: myapp
release: s1
ports:
- name: http
port: 80
targetPort: 80 ---
#Headless Service
apiVersion: v1
kind: Service
metadata:
name: svc-headless
namespace: default
spec:
selector:
app: myapp
clusterIP: "None"
ports:
- port: 80
targetPort: 80 ---
#NodePort
apiVersion: v1
kind: Service
metadata:
name: svc-port
namespace: default
spec:
type: NodePort
selector:
app: myapp
release: s1
ports:
- name: http
port: 80
targetPort: 80
---
#ExternalName
kind: Service
apiVersion: v1
metadata:
name: svc-cname
namespace: default
spec:
type: ExternalName
externalName: hub.elven.vip
#创建
kubectl apply -f svc-demo.yaml #查看
kubectl get pod
kubectl get deployment
kubectl get svc ##ClusterIP
#curl访问svc-ip查看轮询效果
svc_ip=$(kubectl get svc |awk '/svc-ip/{print $3}')
for((i=1;i<10;i++));do curl $svc_ip ;done ##Headless Service #无头service
#不分配Cluster IP ,service name直接解析为Pod ip
#查看kube-dns ip 默认是10.96.0.10
kubectl get svc -A |grep kube-dns
#指定dns解析svc
dig -t A @10.96.0.10 svc-headless.default.svc.cluster.local ##NodePort
#访问node-ip:port ##ExternalName
#DNS层CNAME别名方式绑定外部地址,访问Service实际访问外部地址
#指定dns解析svc-cname,查看到cname记录
dig -t A @10.96.0.10 svc-cname.default.svc.cluster.local #删除
kubectl delete -f svc-demo.yaml

Blog地址 https://www.cnblogs.com/elvi/p/11755749.html

本文git地址 https://gitee.com/almi/k8s/tree/master/notes

4.1.k8s.svc(Service)的更多相关文章

  1. Kubernetes K8S之Service服务详解与示例

    K8S之Service概述与代理说明,并详解所有的service服务类型与示例 主机配置规划 服务器名称(hostname) 系统版本 配置 内网IP 外网IP(模拟) k8s-master Cent ...

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

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

  3. k8s 无头service 方式向内发布

    k8s 无头service 是指 clusterIP 为 None 的service 案例,假定有一个 deployment,containerPort 端口80,同时还被打上 python=mywe ...

  4. k8s之Service资源

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

  5. K8S中Service

    Service 的概念Kubernetes  Service  定义了这样一种抽象:一个  Pod  的逻辑分组,一种可以访问它们的策略 —— 通常称为微服务. 这一组  Pod  能够被  Serv ...

  6. linux运维、架构之路-K8s通过Service访问Pod

    一.通过Service访问Pod 每个Pod都有自己的IP地址,当Controller用新的Pod替换发生故障的Pod时,新Pod会分配到新的IP地址,例如:有一组Pod对外提供HTTP服务,它们的I ...

  7. k8s系列---service

    来源 : http://blog.itpub.net/28916011/viewspace-2214745/ service是要通过coreDNS来管理pod的. kube-proxy始终监视着api ...

  8. 【K8S】Service服务详解,看这一篇就够了!!

    k8s用命名空间namespace把资源进行隔离,默认情况下,相同的命名空间里的服务可以相互通讯,反之进行隔离. 1.1 Service Kubernetes中一个应用服务会有一个或多个实例(Pod, ...

  9. 7. 丈母娘嫌我不懂K8s的Service概念,让我去面壁

    文章目录 怎么跟你说 Service的出现,就是 解决ip不固定的问题 ,怎么解决呢 ? 听小刘慢慢道来 当Pod宕机后重新生成时,其IP等状态信息可能会变动,Service会根据Pod的Label对 ...

随机推荐

  1. Linux基础命令练习题(附答案)

    1.分别用cat \tac\nl三个命令查看文件/etc/ssh/sshd_config文件中的内容,并用自己的话总计出这三个文档操作命令的不同之处? [root@localhost ~]# cat ...

  2. QWidget 设置背景图片

    QWidget 设置背景图片办法: 利用 QPaltette QPixmap pixmap("back.png"); QPalette palette; palette.setBr ...

  3. 【转】sysctl命令及改变net.ipv4.ip_forward = 1方法

    转自:https://blog.csdn.net/michaelzhou224/article/details/16979285 sysctl配置与显示在/proc/sys目录中的内核参数.可以用sy ...

  4. CSS3 transform 属性 旋转 div 元素

    div { transform:rotate(7deg); -ms-transform:rotate(7deg); /* IE 9 */ -moz-transform:rotate(7deg); /* ...

  5. Django学习系列4:编写第一个简单的应用代码

    首页视图编写 lists/tests.py from django.test import TestCasefrom django.urls import resolvefrom lists.view ...

  6. Java JDK下载方法

    https://jingyan.baidu.com/album/574c5219fb033c2c8d9dc194.html?picindex=5  也可以参考这个 ‘’‘’ 大家下载的时候一定要按照步 ...

  7. SpirngBoot之整合邮件服务

    一.集成邮件服务 1.1 获取客户端授权码 1.2 引入依赖 <dependencies> ...... <dependency> <groupId>org.spr ...

  8. Docker(2)--Centos7 上安装部署

    Centos7 上安装docker Docker从1.13版本之后采用时间线的方式作为版本号,分为社区版CE和企业版EE. 社区版是免费提供给个人开发者和小型团体使用的,企业版会提供额外的收费服务,比 ...

  9. docker安装各类软件

    安装Docker Docker 要求 CentOS 系统的内核版本高于 3.10 , uname -r 命令查看你当前的内核版本 1 安装一些必要的系统工具: sudo yum install -y ...

  10. Python pickle模块学习(超级详细)

    from  http://blog.csdn.net/sxingming/article/details/52164249