Kubernetes - 5.1 Discovery and Load Balancing - Service
什么是Service
Service是为一组Pod提供入口调度服务,并可以在Pod之间实现负载均衡。由于Pod是有生命周期的,每当Pod进行销毁而启动时IP地址也会随之改变,这将无法被调用者发现到,而Service出新就是为了解决服务发现这个问题,提供一个稳定的入口已便于服务调用者,而不用去关心Pod的IP地址变化。
什么是EndPoint
Service会根据资源定义清单中的选择器选择与之绑定的Pod成员,EndPoint就是存储这些Pod成员的IP及端口信息。
Service类型
ClusterIP
将Service提供一个稳定的IP地址供Kubernetes内部的资源对象访问kubectl apply -f service-clusterip.yaml
apiVersion: v1 kind: Service metadata: name: nginx-service spec: selector: app: nginx type: ClusterIP ports: - protocol: TCP port: 80 targetPort: 80
查看service详细信息kubectl get service nginx-service -oyaml
kubectl describe service nginx-service
NodePort
将Service的Port暴露到Node上,并可以指定Node上的暴露Port (端口范围30000-32767)kubectl apply -f service-nodeport.yaml
apiVersion: v1 kind: Service metadata: name: nginx-service spec: selector: app: nginx type: NodePort ports: - protocol: TCP port: 80 targetPort: 80 nodePort: 30000
查看service详细信息kubectl get service nginx-service -o yaml
kubectl describe service nginx-service
LoadBalancer
将Service暴露在云产商提供的负载均衡服务kubectl apply -f service-loadbalance.yaml
apiVersion: v1 kind: Service metadata: name: nginx-service spec: selector: app: nginx type: LoadBalancer ports: - port: 80 targetPort: 80
kubectl get service nginx-service -o yaml
kubectl describe service nginx-service
ExternalName
将Service映射成外部的DNS名称,请求该Service时将会重定向到外部别名。kubectl apply -f service-externalname.yaml
apiVersion: v1 kind: Service metadata: name: nginx-service spec: type: ExternalName externalName: example.com
kubectl get service nginx-service -o yaml
kubectl describe service nginx-service
Headless
将Service不分配ClusterIP,直接将EndPoint列表返回,让客户端自行决定访问哪一个Podkubectl apply -f service-headless.yaml
apiVersion: v1 kind: Service metadata: name: nginx-service spec: selector: app: nginx clusterIP: None ports: - protocol: TCP port: 80 targetPort: 80
kubectl get service nginx-service -oyaml
kubectl describe service nginx-service
Service基本操作
查看Service列表kubectl get service -o yaml | kubectl get service -o wide
通过kubectl create创建Servicekubectl create service clusterip nginx--tcp=80:80
通过kubectl expose创建Servicekubectl expose deployment nginx-deployment --type=ClusterIP --name=nginx-service --port=80 --target-port=80
通过kubectl delete删除Servicekubectl delete service [serviceName]
kubectl delete -f service-clusterip.yaml
使用技巧
- Kubernetes Service中不建议使用NodePort去指定某一个IP,这样容易造成端口绑定冲突,最好是由系统自动去分配端口。
- Kubernetes 服务调用请通过Service去指定,直接通过Pod IP的方式将容易造成问题,因为Pod在重启后会丢失原有的状态。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
[New Feature]阿里云云盘支持BYOK加密
1.云盘加密介绍 当前阿里云云盘提供KMS加密方案,您除了可以使用默认服务密钥外,还可以使用事先在KMS服务中创建好的CMK进行加密。整个云盘加密过程都是在ECS端完成,可确保静态数据安全以及ECS实例与后端块存储集群之间传输数据的安全性。 2.加密原理 云盘加密采用AES256机制,授权的用户在控制台选择指定CMK ID时,ECS服务通过角色扮演方式,向KMS请求一对明文密钥以及密文密钥,ECS服务在获取密钥对后,将密文密钥保存至云盘meta信息中。此后,每次挂载云盘或者重启ECS实例时,ECS服务向kms服务获取明文密钥,并将该密钥用于每个I/O加密操作。当前阿里云云盘服务仅支持AES256加密机制。后续我们也会逐步演进并支持更多国密算法。 3.使用限制 • 当前所有的云盘类型均支持加密• 目前不直接支持系统盘加密,如果要针对系统盘加密,则需要通过镜像加密方式完成• 加密会影响云盘的IO性能,IO密集型场景请根据实际情况评估是否开启云盘加密功能• 针对加密云盘创建的快照,默认也是加密状态,并且使用与云盘相同的加密密钥 4.控制台操作 云盘服务默认会在每个region...
- 下一篇
Kubernetes - 5.2 Discovery and Load Balancing - Ingress
什么是Ingress Ingress可以将Kubernetes内部的Service通过HTTP/HTTPS的虚拟主机方式暴露到集群外部,可以由Ingress定义请求的路由规则。 Ingress 基础操作 通过资源定义清单创建Ingresskubectl apply -f nginx-ingress.yaml apiVersion: extensions/v1beta1 kind: Ingress metadata: name: nginx-ingress spec: rules: - host: nginx.com http: paths: - backend: serviceName: nginx-service servicePort: 80 path: / tls: - hosts: - nginx.com secretName: ingress-certificate 查看ingress详细信息kubectl get ingress -o yaml kubectl describe ingress nginx-ingress Ingress开启TLS支持 在创建Ingress可...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS关闭SELinux安全模块
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- SpringBoot2整合Redis,开启缓存,提高访问速度
- MySQL8.0.19开启GTID主从同步CentOS8
- Hadoop3单机部署,实现最简伪集群
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16