kubernetesがサービスポートを露出するいくつかの方法


kubernetesがサービスポートを露出するいくつかの方法
サービスを外部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