kubernetes核心技术之Service知识点总结

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
可观测可视化 Grafana 版,10个用户账号 1个月
简介: kubernetes核心技术之Service知识点总结

Service

Service 概述

Service Kubernetes 最核心概念, 通过创建 Service,可以为一组具有相同功能的容器应用提供一个统一的入口地 址, 并且将请求负载分发到后端的各个容器应用上。

Service的类型

ClusterIP

ClusterIP是默认的Service类型。它为在同一Kubernetes集群中的Pod提供一个稳定的虚拟IP地址。通过ClusterIP,可以在集群内部通过这个IP地址访问Service提供的应用程序。这种Service类型适用于集群内部的服务通信。

NodePort

NodePort类型的Service将在每个节点上绑定一个固定的端口,并将流量转发到后端Pod。这样,可以通过任何节点的IP地址和该固定端口来访问Service。NodePort适用于集群外部的访问,但不适合生产环境,因为端口范围有限。

LoadBalancer

LoadBalancer类型的Service将使用云提供商的负载均衡器来暴露Service。该负载均衡器会动态分配一个外部的IP地址,并将流量转发到后端Pod。这种Service类型适用于公共云环境,可以通过外部IP地址直接访问Service。但是,需要注意的是,LoadBalancer类型的Service只在云提供商支持的情况下才可用。 除了这三种常见的Service类型,Kubernetes还支持其他类型的Service,如ExternalName和Headless Service,它们用于特定的使用场景和需求。

Service的定义

1、yaml格式的Service定义文件

apiVersion: v1            #必须
kind: Service             #必须
metadata:                 #必须
  name: string              #必须
  namespace: string        #必须
  labels:
    - name: string
  annotations:
    - name: string
spec:                   #必须
  selector:            #必须
    key: volume        #必须
  type: string         #必须
  clusterIP: string
  sessionAffinity: string
  ports:
    - name: string
      protocol: string
      port: int
      targetPort: int
      nodePort: int
status:
  loadBalancer:
    ingress:
      ip: string
      hostname: string

Service基本用法

一般来说, 对外提供服务的应用程序需要通过某种机制来实现, 对于容器应用最简便的方式就是通过 TCP/IP 机制及 监听 IP 和端口号来实现。 创建一个基本功能的 Service

apiVersion: v1
kind: ReplicationController
metadata:
  name: mytomcat
spec:
  replicas: 2
  selector:
    app: mytomcat
  template:
    metadata:
      labels:
        app: mytomcat
    spec:
      containers:
       - name: mytomcat
         image: reg.harbor.com/public/tomcat:latest
         imagePullPolicy: IfNotPresent
         ports:
         - containerPort: 8080

上述是创建一个RC资源的yaml文件,通过执行如下命令创建RC资源

[root@master1 rc]# kubectl apply -f mytomcat.yml
replicationcontroller/mytomcat created

我们可以通过配置文件来定义 Service, 再 通过kubectl create 来创建, 这样可以通过 Service 地址来访问后端的 Pod

apiVersion: v1
kind: Service
metadata:
  labels:
    app: mytomcat
  name: web2
spec:
  ports:
  - port: 8080
    protocol: TCP
    targetPort: 8080
  selector:
    app: mytomcat
  type: NodePort
status:
  loadBalancer: {}
[root@master1 rc]# kubectl apply -f web2.yaml
service/web2 created
[root@master1 rc]# kubectl get svc
NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
kubernetes   ClusterIP   10.1.0.1       <none>        443/TCP          22d
web2         NodePort    10.1.90.208    <none>        8080:35485/TCP   9s

这样可以通过访问Node节点的IP:35485去访问tomcat业务。

多端口Service

有时一个容器应用也可能需要提供多个端口的服务, 那么在 Service 的定义中也可以相应地设置为将多个端口对应 到多个应用服务。

apiVersion: v1
kind: Service
metadata:
  labels:
    app: myapp
  name: web3
spec:
  ports:
  - port: 8080
    name: web
    protocol: TCP
    targetPort: 8080
  - port: 8081
    name: management
    protocol: TCP
    targetPort: 8081
  selector:
    app: myapp
  type: NodePort
status:
  loadBalancer: {}
相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务&nbsp;ACK 容器服务&nbsp;Kubernetes&nbsp;版(简称&nbsp;ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情:&nbsp;https://www.aliyun.com/product/kubernetes
目录
相关文章
|
6天前
|
Kubernetes 调度 Docker
深入探讨容器编排技术:从Docker到Kubernetes
容器编排在现代IT中日益关键,从Docker到Kubernetes,助力应用的自动化部署和扩展。Docker提供容器技术,打包应用及环境为镜像,通过引擎、镜像、容器、网络和存储组件实现隔离运行。Kubernetes作为高级容器编排平台,管理Pod(多容器集合),其核心包括API服务器、控制器管理器、调度器和Kubelet。Kubernetes集群由Master和Worker节点构成,实现Pod的高效调度和运行。
56 6
|
1天前
|
Kubernetes 持续交付 调度
为什么是容器编排技术
**容器编排**是自动化容器部署、管理和扩展的技术,它使得构建跨容器应用、集群调度、健康检查和弹性伸缩变得自动化。Kubernetes是最流行的容器编排平台,提供自动化部署、服务发现、故障恢复和扩展性。学习Kubernetes时,理解其作为面向终态系统的理念很重要,从单个容器开始,结合实践进行学习能提高效率。Kubernetes是Google开源的容器编排引擎,支持自动化部署、可伸缩性和容器管理,其核心概念包括Pod、Controller、Workload、Service、PV/PVC、Namespace和etcd。
|
4天前
|
存储 Kubernetes 监控
使用Kubernetes进行容器编排:技术详解与实践
【5月更文挑战第16天】Kubernetes,简称K8s,是开源容器编排系统,用于自动化部署、扩展和管理容器化应用。核心概念包括节点、Pod(最小部署单元)、服务、标签和副本集。其特点有高可用性、可扩展性、自动化和可移植性。实践使用涉及安装配置集群、编写YAML部署清单、应用部署、监控管理和扩展更新。Kubernetes帮助提升应用的可用性、可扩展性和可移植性。
|
6天前
|
运维 Kubernetes Linux
Kubernetes详解(七)——Service对象部署和应用
Kubernetes详解(七)——Service对象部署和应用
11 3
|
6天前
|
Kubernetes Java 调度
Java容器技术:Docker与Kubernetes
Java容器技术:Docker与Kubernetes
40 0
|
6天前
|
JSON Kubernetes API
kubernetes核心技术之ConfigMap知识点总结
kubernetes核心技术之ConfigMap知识点总结
25 0
|
6天前
|
Kubernetes 网络协议 调度
kubernetes核心技术之探针知识总结
kubernetes核心技术之探针知识总结
21 0
|
6天前
|
存储 Kubernetes API
kubernetes核心技术之PV与PVC知识总结
kubernetes核心技术之PV与PVC知识总结
66 1
|
6天前
|
Kubernetes 调度 Docker
kubernetes核心技术之Volume知识点总结
kubernetes核心技术之Volume知识点总结
16 0
|
6天前
|
Kubernetes 应用服务中间件 Docker
Kubernetes学习-集群搭建篇(二) 部署Node服务,启动JNI网络插件
Kubernetes学习-集群搭建篇(二) 部署Node服务,启动JNI网络插件

相关产品

  • 容器服务Kubernetes版
  • 推荐镜像

    更多