kubernetes学习-Service

kubernetes学习-Service

  • 1. Service说明
  • 2. 功能
  • 3.Service类型
    • 3.1 NodePort
      • 3.1.1 创建web-service.yaml
      • 3.1.2 创建web-pod.yaml
      • 3.1.3 部署
      • 3.1.4 验证
    • 3.2 ClusterIP
      • 3.2.1 创建web-clusterIp-service.yaml
      • 3.2.2 创建web-clusterIp-pod.yaml
      • 3.2.3 部署
      • 3.2.4 验证
    • 3.3 LoadBalancer
  • 4. Service代理模式
    • 4.1 iptables
    • 4.2 ipvs
  • 5. DNS
    • 5.1 创建busybox-service.yaml
    • 5.2 创建busybox-pod.yaml
    • 5.3 部署
    • 5.4 验证

1. Service说明

Service是Kubernetes中的一种资源对象,用于定义一组Pod的网络访问规则,它为Pod提供了一个稳定的统一访问入口,使得客户端可以始终使用同一个IP地址进行访问,避免了直接使用Pod IP地址导致的不稳定性。
在这里插入图片描述在这里插入图片描述

2. 功能

  • 负载均衡:当多个Pod提供服务时,Service通过负载均衡算法将请求分发到这些Pod,从而实现应用程序的负载均衡。

  • 服务发现:Service提供了一种服务发现机制,自动维护后端Pod IP的变化,确保客户端访问地址保持不变。

3.Service类型

3.1 NodePort

NodePort,在每个节点上启用一个端口来暴露服务,可以在集群外部访问。也会分配一个稳定内部集群IP地址。
访问地址:<任意NodeIP>:<NodePort>
端口范围:30000-32767
在这里插入图片描述

3.1.1 创建web-service.yaml

web-service.yaml

apiVersion: v1
kind: Service
metadata:
  name: web
spec:
  type: NodePort # 服务类型
  ports:
  - port: 80 # Service端口
    protocol: TCP # 协议
    targetPort: 80 # 容器端口(应用程序监听端口)
    nodePort: 32301
  selector:
    app: web # 指定关联Pod的标签

多端口Service定义,对于某些服务,需要公开多个端口,Service也需要配置多个端口定义,通过端口名称区分。
web-service.yaml

apiVersion: v1
kind: Service
metadata:
  name: web
spec:
  type: NodePort # 服务类型
  ports:
  - port: 80 # Service端口
    protocol: TCP # 协议
    targetPort: 80 # 容器端口(应用程序监听端口)
    nodePort: 32301
  - port: 443 # Service端口
    protocol: TCP # 协议
    targetPort: 443 # 容器端口(应用程序监听端口)
    nodePort: 32302
  selector:
    app: web # 指定关联Pod的标签

3.1.2 创建web-pod.yaml

web-pod.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: web
  name: web
spec:
  replicas: 1
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      labels:
        app: web
    spec:
      containers:
      - image: nginx:1.16
        name: nginx

3.1.3 部署

~]# kubectl apply -f web-pod.yaml 
deployment.apps/web created
~]# kubectl apply -f web-service.yaml 
service/web created   
~]# kubectl get services -o wide
NAME           TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE   SELECTOR
kubernetes     ClusterIP      10.96.0.1        <none>        443/TCP        27d   <none>
web            NodePort       10.104.219.112   <none>        80:32301/TCP   13s   app=web
~]# kubectl get pods
NAME                         READY   STATUS             RESTARTS       AGE
web-65655cd78-hsprm          1/1     Running            0              27m

3.1.4 验证

访问集群节点IP的映射端口
在这里插入图片描述

3.2 ClusterIP

ClusterIP,默认,分配一个稳定的IP地址,即VIP,只能在集群内部访问。
在这里插入图片描述

3.2.1 创建web-clusterIp-service.yaml

apiVersion: v1
kind: Service
metadata:
  name: web-clusterip
spec:
  type: ClusterIP # 服务类型
  ports: 
  - port: 80 # Service端口
    protocol: TCP # 协议
    targetPort: 80 # 容器端口(应用程序监听端口)
  selector:
    app: web-clusterip # 指定关联Pod的标签

3.2.2 创建web-clusterIp-pod.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: web-clusterip
  name: web-nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: web-clusterip
  template:
    metadata:
      labels:
        app: web-clusterip
    spec:
      containers:
      - image: nginx:1.16
        name: nginx

3.2.3 部署

~]# kubectl apply -f web-clusterIp-service.yaml 
service/web-clusterip created
~]# kubectl apply -f web-clusterIp-pod.yaml 
deployment.apps/web-nginx created
~]# kubectl get pods
NAME                         READY   STATUS             RESTARTS       AGE
web-65655cd78-hsprm          1/1     Running            0              27m
web-nginx-6b59757964-9rd6v   1/1     Running            0              18s
~]# kubectl get service -o wide
NAME            TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE     SELECTOR
web             NodePort       10.104.219.112   <none>        80:32301/TCP   28m     app=web
web-clusterip   ClusterIP      10.97.209.118    <none>        80/TCP         6m28s   app=web-clusterip

3.2.4 验证

访问集群IP(10.97.209.118)的80端口,集群外无法访问。

~]# curl http://10.97.209.118
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

3.3 LoadBalancer

LoadBalancer,外部,对外暴露应用,适用公有云。与NodePort类似,在每个节点上启用一个端口来暴露服务。除此之外,Kubernetes会请求底层云平台(例如阿里云、腾讯云、AWS等)上的负载均衡器,将每个Node([NodeIP]:[NodePort])作为后端添加进去。
在这里插入图片描述

4. Service代理模式

4.1 iptables

特点

  • 灵活,功能强大
  • 规则遍历匹配和更新,呈线性时延

在这里插入图片描述

4.2 ipvs

  • 工作在内核态,有更好的性能
  • 调度算法丰富:rr,wrr,lc,wlc,ip hash…
    在这里插入图片描述

5. DNS

CoreDNS:是一个DNS服务器,Kubernetes默认采用,以Pod部署在集群中,CoreDNS服务监视Kubernetes API,为每一个Service创建DNS记录用于域名解析。
ClusterIP A记录格式:<service-name>.<namespacename>.svc.cluster.local
示例:my-svc.my-namespace.svc.cluster.local
在这里插入图片描述

5.1 创建busybox-service.yaml

busybox-service.yaml

apiVersion: v1
kind: Service
metadata:
  name: busybox-service
spec:
  type: NodePort # 服务类型
  ports: 
  - port: 80 # Service端口
    protocol: TCP # 协议
    targetPort: 80 # 容器端口(应用程序监听端口)
    nodePort: 32302
  selector:
    app: busybox # 指定关联Pod的标签

5.2 创建busybox-pod.yaml

busybox-pod.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: busybox-sleep-deployment
  labels:
    app: busybox
spec:
  replicas: 1
  selector:
    matchLabels:
      app: busybox
  template:
    metadata:
      labels:
        app: busybox
    spec:
      containers:
      - name: busybox
        image: busybox
        command: ["/bin/sh", "-c", "sleep 300s"]

5.3 部署

~]# kubectl apply -f busybox-pod.yaml 
deployment.apps/busybox-sleep-deployment unchanged
]# kubectl apply -f busybox-service.yaml 
service/busybox-service created
~]# kubectl get pods -o wide
NAME                                        READY   STATUS         RESTARTS       AGE     IP              NODE      NOMINATED NODE   READINESS GATES
busybox-sleep-deployment-5bddd5fcfb-9tfql   1/1     Running        0              4m51s   10.244.184.58   node-02   <none>           <none>
~]# kubectl get services
NAME              TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
busybox-service   NodePort       10.104.240.39    <none>        80:32302/TCP   67s

5.4 验证

验证域名busybox-service.default.svc.cluster.local

~]# kubectl exec -it busybox-sleep-deployment-5bddd5fcfb-9tfql -- sh
/ # ls
bin    dev    etc    home   lib    lib64  proc   root   sys    tmp    usr    var
/ # nslookup busybox-service.default.svc.cluster.local
Server:         10.96.0.10
Address:        10.96.0.10:53
Name:   busybox-service.default.svc.cluster.local
Address: 10.104.240.39
/ # 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/948898.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用WebSocket 获取实时数据

回车发送数据&#xff0c;模拟服务器发送数据 效果图&#xff1a; 源码&#xff1a; <template><div><h1>WebSocket 实时数据</h1><input type"text" v-model"ipt" keyup.enter"sendMessage(ipt)"><div v-if…

NeurIPS 2024 | SHMT:通过潜在扩散模型进行自监督分层化妆转移(阿里,武汉理工)

当前的妆容转移技术面临两个主要挑战&#xff1a; 缺乏成对数据&#xff0c;导致模型训练依赖于低质量的伪配对数据&#xff0c;从而影响妆容的真实感&#xff1b; 不同妆容风格对面部的影响各异&#xff0c;现有方法难以有效处理这种多样性。 今天给大家介绍的方法是由阿里联…

Mongo高可用架构解决方案

Mongo主从复制哪些事(仅适用特定场景) 对数据强一致性要求不高的场景,一般微服务架构中不推荐 master节点可读可写操作,当数据有修改时,会将Oplog(操作日志)同步到所有的slave节点上。那么对于从节点来说仅只读,所有slave节点从master节点同步数据,然而从节点之间互相…

JVM对象内存分配

1 栈上分配 栈空间随着方法执行完毕而回收通过栈上分配对象内存空间的方式&#xff0c;减少对堆空间的使用&#xff0c;从而减少gc的压力&#xff0c;提升程序性能 逃逸分析&#xff1a;分析对象的作用域&#xff0c;判断对象所需内存是否可以在栈上分配当对象没有被外部方法或…

性能测试04|JMeter:连接数据库、逻辑控制器、定时器

目录 一、连接数据库 1、使用场景 2、直连数据库的关键配置 3、案例 ​编辑 二、逻辑控制器 1、if控制器 2、循环控制器 3、ForEach控制器 三、定时器 1、同步定时器 2、常数吞吐量定时器&#xff08;用的少&#xff0c;了解即可&#xff09; 3、固定定时器 一、连…

国内Ubuntu环境Docker部署 SenseVoice

国内Ubuntu环境Docker部署 SenseVoice 趁热搞定了 docker 部署 SenseVoice。在这里记录一下相关的文件。 SenseVoice是一个大模型语音识别库, 支持多种语言识别&#xff0c;速度快&#xff0c;准确率高&#xff0c;详细介绍请参考GitHub官网&#xff1a; https://github.com/Fu…

1.2.1-2部分数据结构的说明02_链表

&#xff08;1&#xff09;链表数据结构&#xff1a; 概念&#xff1a; 将列表中相互连接的节点不连续的存储在内存中。与数据不同&#xff0c;我们无法再恒定时间内访问任何元组&#xff0c;如果遍历所有则花费时间与元素总数n成正比。插入和删除1个元素的时间复杂度都是O(n…

什么是.net framework,什么是.net core,什么是.net5~8,版本对应关系

我不知道有多少人和我一样&#xff0c;没学习过.netCore&#xff0c;想要学习&#xff0c;但是版本号太多就蒙了&#xff0c;不知道学什么了&#xff0c;这里解释下各个版本的关系 我们一般开始学习微软的时候&#xff0c;都是开始学习的.netframework&#xff0c;常用的就是4…

网站常用功能模块-鉴权

一&#xff1a;JWT是什么&#xff1f; 常用鉴权方式有很多种&#xff0c;今天主要介绍基于token的鉴权方式JWT&#xff08;Json JSON Web Token&#xff09;。因为这种方式实现起来方便快捷。整体实现逻辑如下 第一次登陆时&#xff0c;前端携带账号和密码请求登录接口。服务…

S32K144 UDSdoCAN 升级刷写实现笔记

文章目录 1. 摘要2. 开发环境搭建2.1 开发板2.2 IDE 安装2.3 更新扩展包2.4 烧录仿真测试2.4.1 新建工程2.4.2 导入已有工程2.4.3 编译工程2.4.4 硬件连接2.4.5 Debug2.4.6 添加 .c .h 文件2.5 串口配置2.5.1 时钟2.5.2 GPIO2.5.3 定时器2.5.4 uart 工程2.5.5 烧录验证3. 升级原…

《信息收集是这样吗?》

信息收集 前置&#xff1a;渗透思路&#xff1a; 1&#xff0c; 信息收集 2&#xff0c; 漏洞扫描 3&#xff0c; 漏洞挖掘 4&#xff0c; 开始攻击 5&#xff0c; 权限维持&#xff08;持久化&#xff09; 6&#xff0c; 权限提升 7&#xff0c; 免杀隐藏 8&#xff…

[深度学习] 大模型学习1-大语言模型基础知识

大语言模型&#xff08;Large Language Model&#xff0c;LLM&#xff09;是一类基于Transformer架构的深度学习模型&#xff0c;主要用于处理与自然语言相关的各种任务。简单来说&#xff0c;当用户输入文本时&#xff0c;模型会生成相应的回复或结果。它能够完成许多任务&…

用matlab调用realterm一次性发送16进制数

realterm采用PutString接口进行发送&#xff0c;需要注意的是发送的16进制数前面要加入0x标志。只有这样&#xff0c;realterm才能将输入的字符串识别为16进制数的形式。 另外,PutString函数支持两个参数输入&#xff0c;第一个参数为字符串&#xff0c;第二个参数为发送形式&…

【C++】B2099 矩阵交换行

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;题目描述题目描述输入格式输出格式输入输出样例输入 #1输出 #1 &#x1f4af;题目分析&#x1f4af;不同解法分析我的做法实现步骤&#xff1a;优点&#xff1a;不足&#…

HTML5实现好看的博客网站、通用大作业网页模板源码

HTML5实现好看的博客网站、通用大作业网页模板源码 前言一、设计来源1.1 主界面1.2 列表界面1.3 文章界面 二、效果和源码2.1 动态效果2.2 源代码 源码下载结束语 HTML5实现好看的博客网站、通用大作业网页模板源码&#xff0c;博客网站源码&#xff0c;HTML模板源码&#xff0…

动态规划六——两个数组的dp问题

目录 题目一——1143. 最长公共子序列 - 力扣&#xff08;LeetCode&#xff09; 题目二——1035. 不相交的线 - 力扣&#xff08;LeetCode&#xff09; 题目三——115. 不同的子序列 - 力扣&#xff08;LeetCode&#xff09; 题目四—— 44. 通配符匹配 - 力扣&#xff08;…

大模型与EDA工具

EDA工具&#xff0c;目标是硬件设计&#xff0c;而硬件设计&#xff0c;您也可以看成是一个编程过程。 大模型可以辅助软件编程&#xff0c;相信很多人都体验过了。但大都是针对高级语言的软件编程&#xff0c;比如&#xff1a;C&#xff0c;Java&#xff0c;Python&#xff0c…

单片机-串转并-74HC595芯片

1、74HC595芯片介绍 74HC595 是一个 8 位串行输入、并行输出的位移缓存器&#xff0c;其中并行输出为三态输出&#xff08;即高电平、低电平和高阻抗&#xff09;。 15 和 1 到 7 脚 QA--QH&#xff1a;并行数据输出 9 脚 QH 非&#xff1a;串行数据输出 10 脚 SCLK 非&#x…

融乐 1.1.6 | 拥有海量音乐资源的第三方音乐软件,支持无损音质下载

融乐Music是一款界面优美的第三方音乐软件&#xff0c;提供海量音乐资源。用户可以通过分类和搜索轻松找到想要的歌曲&#xff0c;并享受在线畅听和下载无损音质的功能。首页设有推荐歌单、精选和排行榜&#xff0c;帮助用户发现更多好音乐。此外&#xff0c;还支持设置歌词大小…

面试场景题系列:设计搜索自动补全系统

当我们在谷歌上搜索或者在亚马逊上购物时,只要在搜索框中打字,网页上就会展示一个或者更多的与搜索词匹配的结果。这个功能叫作自动补全(Autocomplete)、提前输入(Typeahead)、边输边搜(Search-as-you-type)或者增量搜索(Incremental Search)。图-1展示了一个谷歌搜索的示例,…