1. 3種類のポートが異なる場所で使用されている
port是service的端口
targetport是pod(也就是容器)的端口
nodeport是容器所在node节点的端口(实质上也是通过nodeport类型的service暴露给集群节点,但port没有service类型)
2. 3種類のポートの機能が異なる
- 港
ポートの主な機能は、クラスター内の他のポッドがこのポッドにアクセスするときにポートが必要になることです。たとえば、nginxポッドがmysqlポッドにアクセスする場合、mysqlポッドサービスは次のように定義できます。
apiVersion: v1
kind: Service
metadata:
name: mysql-service
spec:
ports:
- port: 33306
targetPort: 3306
selector:
name: mysql-pod
ポートはサービスのポートであり、nginxはサービスのポート3306にアクセスすることが理解できます。
- ターゲットポート
同様に、targetportはポッドによって公開されたポートであり、nginxからのリクエストがサービスのポート3306に到達すると、サービスはセレクタ内の名前に従ってmysql-podのポート3306にリクエストを転送します。
- ノードポート
Nodeportはよく理解されています。これは、クラスタ内のサービスにアクセスするときに、クラスタ外のクライアントがアクセスするポートです。たとえば、顧客は以下のクラスタのnginxにアクセスします。
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
type: NodePort # 有配置NodePort,外部流量可访问k8s中的服务
ports:
- port: 30080 # 服务访问端口
targetPort: 80 # 容器端口
nodePort: 30001 # NodePort
selector:
name: nginx-pod
3.まとめ
-
nodeportは、nginx、apacheへのクライアントアクセスなど、クラスター内のサービスにアクセスするためのクラスター外のトラフィックのポートタイプです。
-
portは、クラスター内のポッドが相互に通信するために使用するポートタイプです。たとえば、nginxはmysqlにアクセスし、mysqlはクラスター外のクライアントからアクセスする必要はありません
-
名前が示すとおり、targetportは最終ポートであるターゲットポート、つまりポッドのポート