Kubernets Service|学习笔记

简介: 快速学习 Kubernets Service

开发者学堂课程【Kubernetes 入门 Kubernets Service】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/51/detail/1020


Kubernets Service


内容介绍

一、上节回顾

二、需求来源

三、用例解读

四、操作演示

五、架构设计

 

一、上节回顾

1、Kubernetes Pod 网络的基本要素

Pod 有独立的网络空间和唯─地址

Pod 与 Pod,Node,外界网络互联互通

2、NetworkPolicy

控制 Pod 到 Pod,Node,外接网络的访问限制

 

二、需求来源

1、为什么需要服务发现

Kubernetes 应用应如何相互调用?

Pod 生命周期短暂,IP 地址随时变化

Deployment 等的 Pod 组需要统一访问入口和做负载均衡

应用间在不同环境部署时保持同样的部署拓扑和访问方式

应用服务如何暴露到外部访问和负载均衡?

2、Service: Kubernetes 中的服务发现与负载均衡

Service 向上提供外部网络和 PodA,外部网络和 PodA 会通过 Service 去访问,向下Service 对接另外一组 pod 可以通过 Kubernetes 一些方式去负载均衡到一组上面去。

image.png

 

三、用例解读

1、Service 语法

l 新知识点:

ports:定义服务发现的协议和端口

l 历史知识点回顾:

labels:标签

selector:选择器

apiVersion: v1

kind: Service

metadata:

name: my-service   Service元信息

labels:

app: my-servicespec:

selector:       Pod选择器

app: MyApp

ports:

- protocol: TCP   协议和端口

port: 80

targetPort: 9376

 

四、操作演示

1、创建和查看 Service

$ kubectl apply -f service.yaml

service/my-service created

$ kubectl describe service my-service

l Name:my-service

l Namespace: default

l Labels:app=my-service

l Selector:app=MyApp

l Type:ClusterlP

l IP:172.29.3.27 集群内虚拟 IP

l Port:80/TCP

l TargetPort:9376/TCP

l Endpoints:192.168.115.236:9376,192.168.115.237:9376,192.168.115.243:9376(selector 匹配到的后端 Pod 地址)

l Session Affinity: None

2、集群内访问 Service

直接 Service 的虚拟 IP

kubectl get svc 可以查到

直接访问服务名,依靠 DNS 解析

同一个 Namespace 直接通过 servicename 访问

不同 Namespace 加上 namespace 名访问:

{servicename}.{namespace}

通过环境变量访问

MY_SERVICE_PORT_80_TCP=tcp://172.29.3.27:80

MY _SERVICE_SERVICE_HOST=172.29.3.27

MY_SERVICE_PORT=tcp://172.29.3.27:80

MY_SERVICE SERVICE PORT=80

MY_SERVICE_PORT_80_TCP_ADDR=172.29.3.27

MY_SERVICE_PORT_80_TCP_PORT=80

MY_SERVICE_PORT_80_TCP_PROTO=tcp

3、Headless Service

Service 指定 clusterlP: None

Pod 通过 service_name 方式时直接解析到所有后端 Pod lP

客户端应用自主选择需要访问的 Pod

4、向集群外暴露 Service

l Service 类型

ClusterlP

ExternalName

l 向外暴露服务:

NodePort

LoadBalancer

 

五、架构设计

Kubernetes 服务发现架构

image.png

首先在 Kubernetes 的 master 节点和 worker 节点中,在 Kubernetes 的 master 节点中有 APIServer(统一管理)、Cloud Controller Manager(组件)、Coredns(观测配置变化),每个组件会有 Kube-Proxy 部署

后续进阶部分预告

l 深入讲解 Service 的实现原理

l Service 网络出现问题时的 Debug 技巧

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
4月前
|
Kubernetes 负载均衡 网络协议
|
4月前
|
Kubernetes 负载均衡 算法
kubernetes—Service详解
kubernetes—Service详解
37 0
|
7月前
|
Kubernetes 网络协议 应用服务中间件
|
10月前
|
负载均衡 Perl
09-Kubernetes-Service入门
09-Kubernetes-Service入门
|
10月前
|
存储 Kubernetes 负载均衡
21-Kubernetes-Service详解-Service使用
21-Kubernetes-Service详解-Service使用
|
10月前
|
Kubernetes 监控 算法
20-Kubernetes-Service详解-Service介绍
20-Kubernetes-Service详解-Service介绍
|
10月前
|
Kubernetes 负载均衡 网络协议
Kubernetes Service解析
我们都知道,在K8S集群中,每个Pod都有自己的私有IP地址,并且这些IP地址不是固定的。这意味着其不依赖IP地址而存在。例如,当我们因某种业务需求,需要对容器进行更新操作,则容器很有可能在随后的启动运行过程中被分配到其他IP地址。此外,在K8S集群外部看不到该Pod。因此,Pod若单独运行于K8S体系中,在实际的业务场景中是不现实的,故我们需要通过其他的策略去解决,那么解决方案是什么? 由此,我们引入了Serivce这个概念以解决上述问题。
89 0
|
12月前
|
Kubernetes 负载均衡 算法
kubernetes中service探讨
kubernetes中service探讨
86 0
|
Kubernetes 前端开发 应用服务中间件
K8S 集群核心概念 Service_Service 介绍 | 学习笔记
快速学习 K8S 集群核心概念 Service_Service 介绍
103 0
K8S 集群核心概念 Service_Service 介绍 | 学习笔记
|
Kubernetes 网络协议 开发者
K8S 集群核心概念 Service 删除 Service 及学习总结 | 学习笔记
快速学习 K8S 集群核心概念 Service 删除 Service 及学习总结
1599 0
K8S 集群核心概念 Service 删除 Service 及学习总结 | 学习笔记