0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[K8s] サービスタイプ NodePort 動作確認

Last updated at Posted at 2020-10-22

概要

本投稿はK8sのサービス機能の一つである NodePort の動作確認を行った際の個人メモです。

前提条件

  • MacOSにminikube、kubectlがインストールされていること。
  • K8sクラスタが既に起動していること
$ minikube start

サービスとは

サービスとは一時的な存在であり永続的なIPアドレスを持たないポッドに対し、クライアントがアクセスするためのオブジェクトです。
以下記事でデプロイメントまでの動作確認を行っているため、今回は外部からpodに対してアクセスできるか確認を行います。

サービスには以下のようなタイプがありますが、今回はNodePortを使用します。

サービスタイプ アクセス可能範囲と手段
ClusterIP ポッドネットワーク上のポッドから、内部DNSに登録された名前でアクセスできる。
NodePort CluterIPに加え、K8sの外部クライアントのノードのIPとポートを指定することでアクセスできる
LoadBalancer NodePortのアクセス範囲に加え、K8sクラスタ外のクライアントも代表アドレスとプロトコルのデフォルトポートを使用してアクセスできる
ExternalName K8sクラスタ内のポッドネットワーク上のクライアントから、外部のIPアドレスを名前でアクセスできる。

NodePortのマニフェスト

nginxのpodを起動させるためのデプロイメント用と、サービス用でファイルを分けています。

deploy.yml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: web-deploy
spec:
  replicas: 3
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      labels:
        app: web
    spec:
      containers:
      - name: nginx
        image: nginx:latest
service-np.yml
apiVersion: v1
kind: Service
metadata:
  name: web-service-np
spec:
  selector:
    app: web
  ports:
  - protocol: TCP
    port: 80
  type: NodePort # NodePortを指定

デプロイと動作確認

サービスの確認を行うと、32496ポートにマッピングしていることがわかります。
公開用のポート番号は、デフォルトで30000~32767です。

$ kubectl apply -f deploy.yml
deployment.extensions/web-deploy configured
$ kubectl apply -f service-np.yml
service/web-service-np created
$ kubectl get service
NAME             TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)        AGE
kubernetes       ClusterIP   10.0.0.1     <none>        443/TCP        16d
web-service-np   NodePort    10.0.0.56    <none>        80:32496/TCP   30s

クラスタのIPを確認後、使用している端末からnginxのhtmlにアクセスできるか確認します。

$ minikube ip
192.168.99.100
$ curl 192.168.99.100:32496
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

サービスを使用することで、ポッドに外部からアクセスできることが確認できました。
NodePortはお手軽に動作確認ができて便利ですが、本番運用向きではないためご注意を。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?