Kubernetes入門:nginxにブラウザからアクセスする

スポンサーリンク
Kubernetes入門:nginxにブラウザからアクセスする 初期設定
Kubernetes入門:nginxにブラウザからアクセスする
この記事は約6分で読めます。
よっしー
よっしー

こんにちは。よっしーです(^^)

今日は、Docker Desctop for Mac で有効にしたKubernates上で起動させたnginxにブラウザでアクセスする方法についてご紹介します。

スポンサーリンク

前回の記事

この記事は下記の記事の続きになりますので、気になる方は下記の記事も参考にしてください。

Deployment

今回の記事で使用するDeploymentファイル(nginx-deployment.yaml)は下記になります。前回の記事で使用したDeploymentファイルと同じです。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.16.1
        ports:
        - containerPort: 80

Service

下記の内容で新規ファイル(nginx-service.yaml)を作成します。

apiVersion: v1  # Serviceの場合は「v1」固定
kind: Service  # Serviceを指定
metadata:
  name: nginx-service  # Serviceの名前(任意の名前を付与)を指定
spec:  # Podのポリシーの定義
  type: NodePort
  ports:
    - port: 80
      nodePort: 30000
  selector:
    app: nginx  # Deploymentで指定したPodの名前を指定

動作確認

下記のコマンドを実行して、Podが作成されていることを確認します。

% kubectl get pods
NAME                                READY   STATUS      RESTARTS      AGE
nginx-deployment-68fc675d59-hlw4x   1/1     Running     1 (22m ago)   23h
nginx-deployment-68fc675d59-r58dm   1/1     Running     1 (22m ago)   23h
nginx-deployment-68fc675d59-thp8p   1/1     Running     1 (22m ago)   23h

もし、上記のような出力になっていなければ、下記のコマンドを実行して、Podを作成します。

kubectl apply -f nginx-deployment.yaml

下記のコマンドを実施して、下記のように出力されていれば、成功です。

% kubectl apply -f nginx-service.yaml
service/nginx-service created

% kubectl get services
NAME            TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
kubernetes      ClusterIP   10.96.0.1       <none>        443/TCP        2d5h
nginx-service   NodePort    10.98.105.198   <none>        80:30000/TCP   52s

ブラウザから http://localhost:30000/ にアクセスして下図のようになれば成功です。

解説

Serviceとは


KubernetesにおけるService(サービス)は、Kubernetesクラスタ内の複数のPod(コンテナの実行インスタンス)に対して一意のネットワークエンドポイントを提供するリソースです。Serviceは、Podのセット(Podのラベルセレクタに基づいて一致する一連のPod)に対して、単一の仮想IPアドレス(クラスタ内部のIPアドレス)とポート番号の組み合わせを公開します。

Serviceは、Kubernetesクラスタ内部の通信を簡素化するために使用されます。クライアントアプリケーションは、ServiceのIPアドレスとポート番号を使用して、バックエンドのPodに対してリクエストを送信することができます。Serviceは、バックエンドPodのセットに対して負荷分散も行います。つまり、リクエストが複数のPodに均等に分散されるようになります。

Serviceはさまざまなタイプを持つことができます。主なServiceタイプには以下のものがあります:

  1. ClusterIP: クラスタ内部の仮想IPアドレスを使用してServiceを公開します。このタイプは、クラスタ内の他のリソースからのみアクセス可能です。
  2. NodePort: クラスタのすべてのノードの特定のポート(NodePort)を使用してServiceを公開します。これにより、クラスタの外部からServiceにアクセスできるようになります。
  3. LoadBalancer: クラウドプロバイダによって提供されるロードバランサを使用してServiceを公開します。このタイプは、クラスタの外部からのトラフィックをバランスするために使用されます。
  4. ExternalName: CNAMEレコードを使用して、外部のDNS名をServiceとして公開します。このタイプは、外部のサービスにアクセスするために使用されます。

これらのServiceタイプは、異なる用途とユースケースに応じて選択されます。ServiceはKubernetesクラスタ内のネットワーキングとアプリケーションの可用性を向上させるための重要なコンポーネントです。

おわりに

今日は、Docker Desctop for Mac で有効にしたKubernates上でnginxにブラウザからアクセスする方法についてご紹介しました。

よっしー
よっしー

何か質問や相談があれば、遠慮なくコメントしてください。また、エンジニア案件についても、いつでも相談にのっていますので、お気軽にお問い合わせください。

それでは、また明日お会いしましょう(^^)

コメント

タイトルとURLをコピーしました