minikubeに導入された最初のKuberneteアプリケーション

5247 ワード

(Proudly powered by QKQ)
前の記事でminikubeをインストールしたので、次はkubernetesのhello worldを試してみましょう.
Q:kubernetesにアプリケーションを配備するにはいくつかのステップが必要ですか?
A:kubernetesにアプリケーションを配備するには、まずアプリケーションをミラー化してからkubernetesに配備する必要があります.したがって、
  • ミラー
  • を作成
  • は、ミラー
  • を格納するためのミラーウェアハウスを必要とする.
  • kubernetesのdeploymentファイルを作成し、pod
  • にミラーを配置します.
  • kubernetesのサービスファイルを作成しpodのサービスを作成し、ポート
  • を外部に露出する
    ここでは、まずミラーの作成をスキップして、ネットワーク上のechoミラーを直接使用します.すなわち、kennship/http-echoは、単純なnodejsコードであり、要求を受信し、要求情報を返す.主なコードは次のとおりです.
    var express = require('express')
    var bodyParser = require('body-parser') 
    
    var app = express()
    app.use(bodyParser.urlencoded({ extended: false }))
    app.use(bodyParser.json())
    
    app.all('*', (req, res) => {
      res.json({
        service: process.env.SERVICE_NAME || undefined, // Keys with value `undefined` are omitted during JSON serialization
        path: req.path,
        headers: req.headers,
        method: req.method,
        body: req.body,
        cookies: req.cookies,
        fresh: req.fresh,
        hostname: req.hostname,
        ip: req.ip,
        ips: req.ips,
        protocol: req.protocol,
        query: req.query,
        subdomains: req.subdomains,
        xhr: req.xhr,
      })
    })
    
    app.listen(process.env.PORT || 3000)
    

    Q:プライベートミラーウェアハウスの構築方法
    A:ミラーはdocker hubから引き出し、ローカルにミラーウェアハウスを構築します.ミラー・ウェアハウスの構築は簡単です:docker run -d -p 5000:5000 --name registry registry:2このコマンドはdocker hubからregistryミラーを引き出し、コンテナとして起動します.このポートは5000です.
    次にdocker hubからechoミラーを引き出します:docker pull kennship/http-echoミラーをtagに追加し、pushをローカルミラーウェアハウスに送信します.
    docker tag kennship/http-echo 192.168.99.1:5000/echo:v1.0
    docker push 192.168.99.1:5000/echo:v1.0
    

    注意、192.168.99.1はminikubeが作成した仮想マシンのネットワークです.このdocker registryを仮想マシンで使用する必要があるため、このアドレスです.tagのときにv 1.0というラベルを付けないと、pullを行うときにmanifest not foundのようなエラーが表示されます.
    ミラーを作成した後docker pull 192.168.99.1:5000/echo:v 1.0を使用すると、プルが取れないことがわかります.これはプライベートウェアハウスなのでdocker daemonにこのinsecure registry(安全でないウェアハウス)を追加する必要があります.macosのdocker daemonのpreferencesのdaemonページ、insecure registriesに192.168.99.1:5000を追加し、daemonを再起動すると、ミラーの引き出しに成功します.
    minikube startの場合、コマンド--insecure-registries=192.168.99.1:5000を使用して仮想マシン内のdocker daemonのprivate registryを設定する必要があります.
    最終minikube start命令は次のとおりです.
    minikube start --docker-env http_proxy=[http://192.168.99.1:1087](http://192.168.99.1:1087/) --docker-env https_proxy=[http://192.168.99.1:1087](http://192.168.99.1:1087/) --docker-env no_proxy=localhost,127.0.0.1,192.168.99.0/24 --log_dir=tmp --cpus 4 --memory 8192 --insecure-registry=192.168.99.1:5000
    

    Q:kubernetesのdeployment命令?
    A:このときpodを作成します.podは何ですか.1つ以上のコンテナであり、podはkubernetesスケジューリングの基本ユニットである.ミラーリングがあり、ミラーリングの実行時はコンテナなので、コンテナが必要です.k 8 sの中のコンテナはpodの形で動作します.deploymentはpodを作成するために使用されます.echoのdeployment(ファイル名deploy.yaml):
    # deploy.yaml
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: echo-deployment
      labels:
        app: echo
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: echo
      template:
        metadata:
          labels:
            app: echo
        spec:
          containers:
          - name: koly-echo
            image: 192.168.99.1:5000/echo:v1.0
            ports:
            - containerPort: 3000
    
    kubectl apply -f deploy.yamlを使用して、k 8 sにechoミラーベースのpodを実行するように伝える.その後、kubectl get podsを使用してpodが正常に動作しているかどうかを確認できます.
    Q:echoサービスのサービス?
    A:サービスは何に使いますか.k 8 sのサービスはpodにアクセスするためのもので、podが再起動される可能性があるため、再起動するとipが変わり、サービスには名前があり、名前でサービスが表すpodにアクセスすることができます.echoサービスのサービス(ファイル名service.yaml):
    apiVersion: v1
    kind: Service
    metadata:
      name: echo-service
    spec:
      selector:
        app: echo
      type: NodePort
      ports:
      - protocol: TCP
        port: 80
        targetPort: 3000
        nodePort: 30080
    

    注意、targetPortはdeploymentのcontainerPortと一致しています.NodePortはminikubeが作成したマシンのポートをサービスのポートにマッピングし、サービスのポートをpodのポートにマッピングしたことを示しています.この場合、minikube ipを使用してマシンのipアドレスを取得し、curl -v http://$(minikube ip):30080/helloを使用してechoserverにアクセスできます.結果を返します.
    *   Trying 127.0.0.1...
    * TCP_NODELAY set
    * Connected to 127.0.0.1 (127.0.0.1) port 1087 (#0)
    > GET http://192.168.99.101:30080/hello HTTP/1.1
    > Host: 192.168.99.101:30080
    > User-Agent: curl/7.54.0
    > Accept: */*
    > Proxy-Connection: Keep-Alive
    >
    < HTTP/1.1 200 OK
    < X-Powered-By: Express
    < Content-Type: application/json; charset=utf-8
    < Content-Length: 259
    < ETag: W/"103-vpP+vLOLEtvy++USO5/H0ZHELDg"
    < Date: Sun, 06 Jan 2019 12:11:21 GMT
    < Connection: keep-alive
    < Proxy-Connection: keep-alive
    <
    * Connection #0 to host 127.0.0.1 left intact
    {"path":"/hello","headers":{"host":"192.168.99.101:30080","user-agent":"curl/7.54.0","accept":"*/*"},"method":"GET","body":{},"fresh":false,"hostname":"192.168.99.101","ip":"::ffff:172.17.0.1","ips":[],"protocol":"http","query":{},"subdomains":[],"xhr":false}
    

    まとめて、appを実行するには、次の手順に従います.
  • ミラー
  • ミラーウェアハウス
  • Deployment、すなわちPod、すなわち容器の担体
  • .
  • Service、対外露出サービスのipとポート