K8s中的containerPort与port、targetPort、nodePort的关系:

pod中的containerPort与service中的port、targetPort、nodePort的关系:

1、containerPort为pod的配置,对应pod内部服务监听的具体端口,例如nginx服务默认监听80端口,那么nginx的pod的containerPort应该配置为80,例如mysql默认监听3306,那么mysql的pod的containerPort应该配置为3306。

例如下面的简单例子:

yaml 复制代码
apiVersion: v1
kind: Pod
metadata:
  name: nginx-pod
  labels:
    app: nginx
spec:
  containers:
  - name: nginx-container
    image: nginx:latest
    ports:
    - containerPort: 80

2、service配置中的port提供k8s集群内的pod间互访访问,可自定义,targetPort应该与要进行流量转发的目标pod的containerPort配置一致,nodePort只在svc类型为nodePort时使用,是将svc的port映射到宿主机操作系统接口

2.1、nodePort类型的service

yaml 复制代码
apiVersion: v1
kind: Service
metadata:
  name: nginx-service-nodeport
spec:
  type: NodePort
  selector:
    app: nginx
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80 #因与pod中的containerPort一致
      nodePort: 30001 #暴露到宿主机操作系统的端口,k8s集群外部可通过""节点ip:端口""访问集群内部的服务

2.2、clusterIP类型的service

此种类型的service只能通过k8s集群内部ip:内部端口访问,外部要访问的话需要配置网关或者改为nodePort类型的service

yaml 复制代码
apiVersion: v1
kind: Service
metadata:
  name: nginx-service-clusterip
spec:
  type: ClusterIP
  selector:
    app: nginx
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80

3、关系图如下:

相关推荐
Dobby_052 小时前
【Linux】安装 Rocky Linux 9 并配置 Kubernetes 集群基础环境 | VMware | Win11
linux·云原生·kubernetes
java_logo3 小时前
Docker 部署 Debian 全流程教程
linux·运维·docker·容器·debian
❀͜͡傀儡师3 小时前
基于 docker compose 进行部署PandaWiki
运维·docker·容器
阿里云云原生3 小时前
阿里巴巴 AI Coding 分享会 Qoder Together 杭州站来啦!
云原生
老年DBA3 小时前
Kubernetes 上的 GitLab + ArgoCD 实践(二):使用自建 GitLab Runner 完善 CI 流程
kubernetes·gitlab·argocd
阿里云云原生4 小时前
告别手动埋点!Android 无侵入式数据采集方案深度解析
android·云原生
老朋友此林4 小时前
一文速通k8s基础概念原理Kubernetes
云原生·容器·kubernetes
VermiliEiz7 小时前
k8s的calico出现ipset报错解决方法
云原生·容器·kubernetes
稚辉君.MCA_P8_Java8 小时前
Bash 括号:()、{}、[]、$()、$(() )、${}、[[]] 到底有什么区别?
开发语言·jvm·后端·容器·bash
先做个垃圾出来………8 小时前
Docker容器部署方法
运维·docker·容器