首页 > 编程语言 >k8s service nodeport

k8s service nodeport

时间:2023-02-24 15:00:19浏览次数:70  
标签:service Service 访问 nodeport test Pod k8s nodePort

服务(Service)

将运行在一组 Pods 上的应用程序公开为网络服务的抽象方法。

Kubernetes 中 Service 的一个关键目标是让你无需修改现有应用程序就能使用不熟悉的服务发现机制。 你可以在 Pod 中运行代码,无需顾虑这是为云原生世界设计的代码,还是为已容器化的老应用程序设计的代码。 你可以使用 Service 让一组 Pod 在网络上可用,让客户端能够与其交互。

如果一组 Pod(称为“后端”)为集群内的其他 Pod(称为“前端”)提供功能, 那么前端如何找出并跟踪要连接的 IP 地址,以便前端可以使用提供工作负载的后端部分?

Kubernetes 中的 Service

Service API 是 Kubernetes 的组成部分,它是一种抽象,帮助你通过网络暴露 Pod 组合。 每个 Service 对象定义一个逻辑组的端点(通常这些端点是 Pod)以及如何才能访问这些 Pod 的策略。

举个例子,考虑一个图片处理后端,它运行了 3 个副本。这些副本是可互换的 —— 前端不需要关心它们调用了哪个后端副本。 然而组成这一组后端程序的 Pod 实际上可能会发生变化, 前端客户端不应该也没必要知道,而且也不需要跟踪这一组后端的状态。

Service 定义的抽象能够解耦这种关联。

定义 Service

Service 在 Kubernetes 中是一个对象 (与 Pod 或 ConfigMap 类似的对象)。你可以使用 Kubernetes API 创建、查看或修改 Service 定义。 通常你使用 kubectl 这类工具来进行这些 API 调用。

Service 资源

Kubernetes的Service定义了一种抽象:逻辑上的一组Pod,一种可以访问它们的方式。这一组Pod能通过Service被访问到,通过是通过Selector来实现的。

举个例子,如果后台有三个节点提供图片访问服务,调用者可以通过Service进行访问,它不需要知道具体访问的是哪一个节点,具体的策略由Service来配置,并实现负载均衡。某种意义上也是服务发现和解耦。

nodePort

外部流量访问K8s的一种方式,即nodeIP:nodePort,是提供给外部流量访问K8s集群资源的一种方式。

 

例子

1、创建POD;

root@master:~# kubectl create deployment test-nodeport --image=nginx --replicas=2
deployment.apps/test-nodeport created

2、创建service;

root@master:~# kubectl create service nodeport test-nodeport --tcp=30001:80 --node-port=30000
service/test-nodeport created

3、查询创建结果:

root@master:~# kubectl get ep
NAME            ENDPOINTS                     AGE
default-nginx   <none>                        98d
kubernetes      192.168.108.21:6443           99d
test-nodeport   10.244.1.6:80,10.244.2.6:80   19s
root@master:~# kubectl get svc -o wide
NAME            TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)           AGE   SELECTOR
default-nginx   ClusterIP   10.107.198.139   <none>        80/TCP            98d   app=nginx
kubernetes      ClusterIP   10.96.0.1        <none>        443/TCP           99d   <none>
test-nodeport   NodePort    10.107.153.7     <none>        30001:30000/TCP   33s   app=test-nodeport
root@master:~# kubectl get pod -l app=test-nodeport
NAME                             READY   STATUS    RESTARTS   AGE
test-nodeport-698fbf5cdd-6cf7c   1/1     Running   0          5m52s
test-nodeport-698fbf5cdd-gnndf   1/1     Running   0          5m52s
root@master:~#

5、外部机器通过nodeport 访问机器内部;

 

 

 

port、nodePort、targetPort

port: K8s集群内部服务访问service的入口。是service暴露在Cluster上的端口,ClusterIP:Port;

targetPort: 容器的端口,也是最终底层的服务所提供的端口,所以说targetPod也就是Pod的端口。从port或者是nodePort进入的流量,经过路由转发之后,最终都会都通过targetPort进入到Pod中;

nodePort:外部流量访问K8s的一种方式,即nodeIP:nodePort,是提供给外部流量访问K8s集群资源的一种方式;

如:

通过外部网络来访问k8s集群资源,需要nodePort,即:nodePort 对外部访问;

 

 

总结

总体来说,除了targetPort是容器本身的端口之外,port和nodePod都是Service的端口。不同的是port是暴露给K8s访问的,nodePort是暴露给外部访问的。

 

标签:service,Service,访问,nodeport,test,Pod,k8s,nodePort
From: https://www.cnblogs.com/juzib/p/17151485.html

相关文章

  • idea 中 springboot项目多实例运行(services窗口)
    1.调出services窗口2.选中要运行的项目,copyConfiguration..3.编辑弹出窗口edit configuration(指定端口的命令--server.port=6004,最前面是两个短横岗 3.运行......
  • k8s-授权apiserver访问kubelet
    本文章是 k8s二进制高可用集群部署 的分支。详细步骤请参考目录。应用场景:例如kubectllogscat>apiserver-to-kubelet-rbac.yaml<<EOFapiVersion:rbac.authoriz......
  • K8s:通过 kubectl 插件 rakkess 查看集群 RBAC授权信息
    写在前面分享一个查看RBAC权限的工具通过rakkess可以查看当前命名空间rbac的授权理解不足小伙伴帮忙指正出其东门,有女如云。虽则如云,匪我思存。缟衣綦巾,聊乐......
  • k8s常用命令
    kubectl常用命令指南Kubctl命令是操作kubernetes集群的最直接的方式,特别是运维人员,需要对这些命令有一个详细的掌握Kubectl自动补全#setupautocompleteinbash......
  • 云原生|kubernetes|kubernetes中的资源(一)---service详解
    前言:每个Pod都有自己的IP地址,但是如果Pod重新启动了的话那么他的IP很有可能也就变化了。这就会带来一个问题:例如我们有一些后端的Pod的集合为集群中的其他前端的......
  • Kubernetes Service 原理
    本文是张磊《深入剖析Kubernetes》的学习记录。假设某svc代理了3个Pod,PodIP是10.244.1.7,10.244.2.3,10.244.3.6,Pod监听的端口是9376。svc的IP是10.0.1.175......
  • k8s API account基本操作
    创建certkey#创建key密钥opensslgenrsa-outvbear.key2048#创建证书opensslreq-new-keyvbear.key-outvbear.csr-subj"/CN=vbear/O=it"#申请签名udoop......
  • K8s集群离线环境部署
    1.环境说明虚拟机工具:VirtualBox7.0虚拟机操作系统:Centos7(CentOS-7-x86_64-Minimal-2003.iso)虚拟机配置:2核CPU、2G内存、40G硬盘虚拟机网络模式:仅主机(Host-Only)网络,......
  • k8s工作端二进制部署-网络组件
    本文章是 k8s二进制高可用集群部署 的分支。详细步骤请参考目录。二进制下载地址压缩包下载:https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG......
  • k8s部署wordpress
    nginxnginx.confserver{listen80;server_namelocalhost;location/{root/apps/nginx/wordpress;indexindex.phpind......