6
8

More than 5 years have passed since last update.

Kubernetesでnginxを立てる

Last updated at Posted at 2019-05-08

Kubernetesの環境を作るまではこちらを参照↓

kubernetesでサーバーを立てられるか試してみる

nginx.deployment.yaml を作ります

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nginx
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.5
        ports:
        - containerPort: 80

デプロイします

$ kubectl create -f nginx.deployment.yaml
deployment.extensions "nginx" created

できた

こちらでpodを確認する

$ kubectl get pod
NAME                     READY     STATUS              RESTARTS   AGE
nginx-64c6b46884-5fh5q   0/1       ContainerCreating   0          54s

nginxを公開する
ロードバランサは高いらしいので、このノードのポートを公開します。

nginx.service.yaml

apiVersion: v1
kind: Service
metadata:
  name: nginx
spec:
  selector:
    app: nginx
  ports:
    - name: http
      protocol: TCP
      port: 80
      targetPort: 80
  externalIPs:
     - <ノードの内部IP>
     - <ノードの内部IP>

ノードの内部IPはこれで引く

$ gcloud --format json compute instances list | jq -r '.[].networkInterfaces[].networkIP'
-bash: jq: command not found

むむ、実行できない。。だと
単純にbashをインストールしてあげる
※ちなみにjqはjsonを解析できるライブラリです

brew install jq

若干、権限で手こずりながらも、インストール完了
改めて、実行するとipが参照できる

$ gcloud --format json compute instances list | jq -r '.[].networkInterfaces[].networkIP'
10.138.0.15

実行します

$ kubectl create -f nginx.service.yaml
service "nginx" created

公開します

gcloud compute firewall-rules create http-firewall --allow tcp:80

あとは、ノードの外部ipにアクセスすれば完了です。
こちらで外部ipが引けます

gcloud --format json compute instances list | jq -r '.[].networkInterfaces[].accessConfigs[].natIP'

アクセス成功です
スクリーンショット 2019-05-08 18.22.52.png

結果、二つのyamlを作りましたが

$ ls
nginx.deployment.yaml   nginx.service.yaml

それぞれは
- Deploymentとは?
- ReplicaSetを生成・管理し、ReplicaSetはPodを生成・管理する

  • Serviceとは?
    • コンテナのアクセス方法を把握しなくても、Serviceが受付口だけ知っていれば通信できる

補足

ちなみに消す場合は、まず、pod名を確認します

kubectl get pod
NAME                     READY     STATUS    RESTARTS   AGE
nginx-64c6b46884-5fh5q   1/1       Running   0          45m

先ほど取得したpod名から不要なpodを以下のコマンドで削除します

$ kubectl delete pod <pod名>
pod "nginx-64c6b46884-5fh5q" deleted
6
8
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
6
8