#yyds干货盘点#kubernetes入门基础-Service的概念以及相关操作

风流不在谈锋胜,袖手无言味最长。这篇文章主要讲述#yyds干货盘点#kubernetes入门基础-Service的概念以及相关操作相关的知识,希望能为你提供帮助。
一、 概述本期目标

  • 了解Service的作用
  • 了解Serivce的类型
  • Serivce参数
  • Service创建方法
  • Service删除方法
二、相关概念 1. Service概念
  • Serivice不是一个实体服务,Service是一条iptables或ipvs的转发规则
  • 通过Service为Pod客户端提供访问Pod方法(即客户端访问Pod入口),Service通过Pod标签与Pod进行关联
2. Service类型
【#yyds干货盘点#kubernetes入门基础-Service的概念以及相关操作】ClusterIP:默认,分配一个集群内部可以访问的虚拟IP
NodePort:在每个Node上分配一个端口作为外部访问入口
LoadBalancer:工作在待定的Cloud Provider上,例如 Google Cloud,AWS,OpenStack
ExternalName:表示把集群外部的服务引入到集群内部中来,即实现集群内部Pod和集群外部的服务进行通信
3. Service参数
常用端口参数
  • port: 访问Service使用的端口
  • targetPort:Pod中容器端口
  • NodePort:通过Node实现外网用户访问k8s集群内部Service(30000-32767)
三、Service的创建 1. 通过命令创建Service
先创建deployment应用,然后创建Service与Deployment应用关联,查看deployment应用:kubectl get deployment.apps,返回以下内容
NAMEREADYUP-TO-DATEAVAILABLEAGE nginx-app23/33380s

创建Service
kubectl expose deployment.apps nginx-app2 --type=ClusterIP --target-port=80 --port=80

查看创建的Service
kubectl get service # 或 kubectl get svc

返回以下内容
NAMETYPECLUSTER-IPEXTERNAL-IPPORT(S)AGE kubernetesClusterIP10.96.0.1< none> 443/TCP36h nginx-app2ClusterIP10.109.170.161< none> 80/TCP100s

查看Service与Pod的端点关系,使用以下命令
kubectl get endpoints

返回以下内容
NAMEENDPOINTSAGE kubernetes192.168.64.8:644336h nginx-app210.244.1.10:80,10.244.1.11:80,10.244.1.9:803m22s

2. 通过资源清单创建Service
我们先在资源清单里定义Deployment应用,再定义Service,创建create-deployment-nginx-app-service.yaml资源清单文件,内容如下:
--- apiVersion: apps/v1 kind: Deployment metadata: name: nginx-app spec: replicas: 2 selector: matchLabels: apps: nginx template: metadata: labels: apps: nginx spec: containers: - name: nginxapp image: nginx:latest imagePullPolicy: IfNotPresent ports: - containerPort: 80 --- apiVersion: v1 kind: Service metadata: name: nginx-app2-svc spec: type: ClusterIP ports: - protocol: TCP port: 80 selector: apps: nginx

通过以下命令来创建
kubectl apply -f create-deployment-nginx-app-service.yaml

3.通过资源清单创建NodePort类型的Service
创建create-deployment-nginx-app3-service.yaml,内容如下
--- apiVersion: apps/v1 kind: Deployment metadata: name: nginx-app3 spec: replicas: 2 selector: matchLabels: apps: nginx-app3 template: metadata: labels: apps: nginx-app3 spec: containers: - name: nginxapp3 image: nginx:latest imagePullPolicy: IfNotPresent ports: - containerPort: 80 --- apiVersion: v1 kind: Service metadata: name: nginx-app3-svc spec: type: NodePort ports: - protocol: TCP port: 80 targetPort: 80 nodePort: 30001 selector: apps: nginx-app3

通过以下命令来创建
kubectl apply -f create-deployment-nginx-app3-service.yaml

4.删除Service
通过命令行删除
kubectl delete service nginx-app2

通过资源清单文件创建的可以通过资源清单文件删除,如下
kubectl delete -f create-deployment-nginx-app-service.yaml


    推荐阅读