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 技巧

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
2月前
|
安全 Linux iOS开发
Tenable Nessus 10.10.1 (macOS, Linux, Windows) - 漏洞评估解决方案
Tenable Nessus 10.10.1 (macOS, Linux, Windows) - 漏洞评估解决方案
148 2
|
11月前
|
人工智能 数据安全/隐私保护
深度揭秘CoT!普林斯顿耶鲁发布最新报告:大模型既有记忆推理、也有概率推理
普林斯顿大学和耶鲁大学研究人员发布报告,探讨链式思维(CoT)提示对大型语言模型(LLM)推理能力的影响。研究通过移位密码任务,揭示了三个关键因素:任务输出概率、预训练阶段的隐性学习及中间操作数量(噪声推理)。实验使用GPT-4、Claude 3和Llama 3.1模型,发现CoT提示可显著提升模型准确性,但也存在局限性。论文地址:https://arxiv.org/abs/2407.01687。
465 29
|
移动开发 API 数据安全/隐私保护
WebSocket 的 API
【10月更文挑战第26天】通过使用 WebSocket API,开发者可以轻松地在浏览器中实现与服务器的实时双向通信,为各种实时性要求高的 Web 应用,如在线游戏、实时聊天、股票行情推送等提供了强大的技术支持,极大地提升了 Web 应用的交互性和用户体验。
|
分布式计算 Hadoop Shell
Hadoop-35 HBase 集群配置和启动 3节点云服务器 集群效果测试 Shell测试
Hadoop-35 HBase 集群配置和启动 3节点云服务器 集群效果测试 Shell测试
335 4
|
机器学习/深度学习 人工智能 自然语言处理
AI 古籍修复技术
AI 古籍修复技术
998 0
|
存储 监控 算法
「AIGC算法」大数据架构Lambda和Kappa
**Lambda与Kappa架构对比:** Lambda提供批处理和实时处理,保证数据最终一致性,但维护复杂。Kappa简化为单一流处理,易于维护,适合实时场景,但可能增加实时处理压力,影响稳定性。选择时考虑数据一致性、系统维护、成本和实时性需求。
561 0
「AIGC算法」大数据架构Lambda和Kappa
|
存储 网络协议 物联网
网络中的“客户端”和“服务器
【8月更文挑战第24天】
1618 0
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的高校学生实习管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的高校学生实习管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
309 2
|
存储 监控 算法
go语言并发实战——日志收集系统(四) 利用tail包实现对日志文件的实时监控
go语言并发实战——日志收集系统(四) 利用tail包实现对日志文件的实时监控
523 0
|
搜索推荐 程序员 测试技术
研究思考|关于软件复杂度的困局
本文重点围绕软件复杂度进行剖析,希望能够帮助读者对软件复杂度成因和度量方式有所了解。