kubernetesがサービスポートを露出するいくつかの方法
1846 ワード
kubernetesがサービスポートを露出するいくつかの方法
サービスを外部IPアドレスに暴露したい場合.Kubernetesは4つの実装方式をサポートし、詳細は以下の通りである.
1:クラスタ内部実装アクセス:Clusterip
Clusteripはクラスタ内部のプライベートipであり、クラスタ内部でのアクセスサービスが非常に便利であり、kuberentesクラスタのデフォルトの方法でもあり、サービスのClusteripから直接アクセスしたり、ServiceNameから直接アクセスしたりすることができます.クラスタの外部にはアクセスできません.
2:クラスタ外部方式アクセス:NodePort
NodePortはkubenretesにおいて初期に広く応用されたサービス暴露方式である.Kubernetesのサービスはデフォルトで使用されるClusterIPというタイプで、このようなサービスはクラスタ内でしかアクセスできないClusterIPを生成します.外部が直接サービスにアクセスできるようにするには、service typeをnodePortに変更する必要があります.サービスリスニングポートをnodeノードにマッピングします.
作成
アクセステスト
クラスタ外では、クラスタ内のサービスにアクセスできるnodeノードのip:nodeportを使用します.
3:LoadBalancer
LoadBlancer Serviceはkubernetesがクラウドプラットフォームを深く結合したコンポーネントである.LoadBlancer Service暴露サービスを使用する場合、実際には、下位クラウドプラットフォームに負荷イコライザの作成を申請することによって、サービスを外部に暴露します.現在、LoadBlancer Serviceがサポートするクラウドプラットフォームは相対的に完備しており、例えば国外のGCE、DigitalOcean、国内のアリクラウド、私有クラウドOpenstackなどは、LoadBlancer Serviceがクラウドプラットフォームを深く結合しているため、いくつかのクラウドプラットフォームでしか使用できない.
4:Ingress
Ingressはkubernetes 1.1リリース後に導入されたリソースタイプ.Ingressリソースを作成するには、Ingress controllerを導入する必要があります.Ingress controllerはプラグインとして提供されます.
Ingressは比較的広く使われています:nginxとtraefik、個人的にtraefikをお勧めします.
Traefik構成の使用方法:
https://blog.51cto.com/michaelkang/2429929
サービスを外部IPアドレスに暴露したい場合.Kubernetesは4つの実装方式をサポートし、詳細は以下の通りである.
1:クラスタ内部実装アクセス:Clusterip
Clusteripはクラスタ内部のプライベートipであり、クラスタ内部でのアクセスサービスが非常に便利であり、kuberentesクラスタのデフォルトの方法でもあり、サービスのClusteripから直接アクセスしたり、ServiceNameから直接アクセスしたりすることができます.クラスタの外部にはアクセスできません.
2:クラスタ外部方式アクセス:NodePort
NodePortはkubenretesにおいて初期に広く応用されたサービス暴露方式である.Kubernetesのサービスはデフォルトで使用されるClusterIPというタイプで、このようなサービスはクラスタ内でしかアクセスできないClusterIPを生成します.外部が直接サービスにアクセスできるようにするには、service typeをnodePortに変更する必要があります.サービスリスニングポートをnodeノードにマッピングします.
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx-dm
spec:
replicas: 2
template:
metadata:
labels:
name: nginx
spec:
containers:
- name: nginx
image: nginx:alpine
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx-svc
spec:
type: NodePort
ports:
- port: 80
targetPort: 80
nodePort: 30004
protocol: TCP
selector:
name: nginx
作成
kubectl create -f nginx-ds.yaml
アクセステスト
クラスタ外では、クラスタ内のサービスにアクセスできるnodeノードのip:nodeportを使用します.
3:LoadBalancer
LoadBlancer Serviceはkubernetesがクラウドプラットフォームを深く結合したコンポーネントである.LoadBlancer Service暴露サービスを使用する場合、実際には、下位クラウドプラットフォームに負荷イコライザの作成を申請することによって、サービスを外部に暴露します.現在、LoadBlancer Serviceがサポートするクラウドプラットフォームは相対的に完備しており、例えば国外のGCE、DigitalOcean、国内のアリクラウド、私有クラウドOpenstackなどは、LoadBlancer Serviceがクラウドプラットフォームを深く結合しているため、いくつかのクラウドプラットフォームでしか使用できない.
4:Ingress
Ingressはkubernetes 1.1リリース後に導入されたリソースタイプ.Ingressリソースを作成するには、Ingress controllerを導入する必要があります.Ingress controllerはプラグインとして提供されます.
Ingressは比較的広く使われています:nginxとtraefik、個人的にtraefikをお勧めします.
Traefik構成の使用方法:
https://blog.51cto.com/michaelkang/2429929