使用Kubernetes(minikube)部署Nginx,并展示Hello World

总结

本书介绍了如何在Ubuntu上使用minikube部署Nginx。然后,我们将配置ConfigMap,以便在部署了”Hello World” HTML文件的Nginx上进行显示。

前提条件 tí

请在Ubuntu上安装minikube。有关minikube的安装方法,请参考作者撰写的下面文章:《在Ubuntu 20.04.1 LTS上安装minikube》。

创建Nginx的YAML文件

使用vi nginx.yaml命令打开Vi编辑器,创建以下YAML文件来生成Nginx的YAML文件。

apiVersion: v1 # 使用するKubernetes APIバージョンを定義
kind: Service # PodのネットワークであるServiceリソースを定義
metadata: # 名前やラベルを指定
  labels:
    app: nginx-app
    name: nginx
  name: nginx-service
spec: # spec内にリソースの仕様を記述する
  selector: # 同一のラベルを定義しているリソースを参照
    app: nginx-app
    name: nginx
  type: NodePort # Kubenetes外からアクセスできるようにNodePortを指定(ホストOSからNginxの画面が確認できるようにする)
  ports:
  - name: nginx-port #ポート番号を指定
    port: 80
    protocol: TCP
    targetPort: nginx-port
---
apiVersion: apps/v1
kind: Deployment # Podの自己修復機能を持つDeploymentリソースを定義
metadata:
  labels:
    app: nginx-app
    name: nginx
  name: nginx
spec:
  replicas: 1 # 作成するPod数を定義
  selector:
    matchLabels:
      app: nginx-app
      name: nginx
  template:
    metadata:
      labels:
        app: nginx-app
        name: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest # NginxのDockerHubに記載されているDockerImageの名称とバージョンを指定
        ports:
        - containerPort: 80 # Podから解放するポート番号を定義
          name: nginx-port
          protocol: TCP

2.部署 Nginx

    1. 执行以下命令,部署创建的YAML文件。

$ kubectl apply -f nginx.yaml

执行以下命令,确认已创建Nginx的Pod和Service。

$ kubectl get pod | grep nginx
nginx-669bffdf57-hnmph 1/1 Running 1 25m
$ kubectl get service | grep nginx
nginx-service NodePort 10.108.1.208 80:30348/TCP 25m

执行以下命令,获取能够在主机操作系统(Ubuntu)上显示Nginx页面的IP地址。

$ minikube service nginx-service
|———–|—————|—————|—————————|
| NAMESPACE | NAME | TARGET PORT | URL |
|———–|—————|—————|—————————|
| default | nginx-service | nginx-port/80 | http://192.168.49.2:30348 |
|———–|—————|—————|—————————|
* 在默认浏览器中打开服务 default/nginx-service…

通过浏览器访问上述分配的IP地址,确认Nginx默认页面能够显示。

image.png

将index.html保存到Configmap资源中。

ConfigMap是将配置文件存储在资源内并在将存储的配置文件挂载到Pod上时使用的工具。
这是Kubernetes官方ConfigMap的概述。

在nginx-configmap.yaml中打开Vi编辑器,创建ConfigMap的YAML文件。

apiVersion: v1
kind: ConfigMap # Podに設定ファイルを渡すことができるリソース
metadata:
  labels:
    app: nginx-app
    name: nginx
  name: nginx-html
data: # 下記にPodに渡したい設定ファイルを定義
  index.html: | # ファイル名を定義
    <html> # 設定ファイルの中身を記載
      <head>
        <title>
        Kubernetes Hello World
        </title>
      <body>
        <h1>
        Kubernetes Hello World
        </h1>
        <h2>
        Kubernetes Nignx ConfigMap
        </h2>
      </body>
    </html>

在创建YAML文件后,执行 “kubectl apply -f nginx-configmap.yaml” 命令来创建 ConfigMap 资源。要确认 ConfigMap 资源是否已创建,请执行 “kubectl get configmap” 命令。

$ kubectl get configmap | grep nginx
nginx-html         1      9m26s

使得在Nginx的Pod上可见index.html文件。

为了将先前创建的ConfigMap资源挂载到Pod上,需要修改第一章中创建的nginx.yaml文件。

apiVersion: v1
kind: Service
metadata:
  labels:
    app: nginx-app
    name: nginx
  name: nginx-service
spec:
  selector:
    app: nginx-app
    name: nginx
  type: NodePort
  ports:
  - name: nginx-port
    port: 80
    protocol: TCP
    targetPort: nginx-port
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx-app
    name: nginx
  name: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx-app
      name: nginx
  template:
    metadata:
      labels:
        app: nginx-app
        name: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80
          name: nginx-port
          protocol: TCP
        volumeMounts: # Pod上にマウントするファイルを定義
        - name: nginx-html-file # マウントしたいvolumeを指定
          mountPath: /usr/share/nginx/html/index.html # 配置するパスを指定(Nginxのデフォルトの公開ディレクトリは/usr/share/nginx/html)
          subPath: index.html # マウントするファイル名を指定
          readOnly: true
      volumes: # マウントしたいリソースを定義
        - name: nginx-html-file # Podにマウントするvolumeを定義
          configMap:
            name: nginx-html # 使用するConfigMapリソースを指定
            items: # ConfigMapリソースで定義した、どのファイルを使用するか指定する
            - key: "index.html"
              path: "index.html"

在修改 YAML 文件后,执行 kubectl apply -f nginx.yaml 命令来应用修改内容。然后,通过浏览器确认 index.html 的内容是否被正确显示。

image.png

最后

通过使用ConfigMap,我们能够在Nginx中显示index.html。我们可以将Kubernetes(minikube)中的ConfigMap与Nginx组合使用,以便在学习HTML或进行操作确认等方面使用。

广告
将在 10 秒后关闭
bannerAds