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コードであり、要求を受信し、要求情報を返す.主なコードは次のとおりです.
Q:プライベートミラーウェアハウスの構築方法
A:ミラーはdocker hubから引き出し、ローカルにミラーウェアハウスを構築します.ミラー・ウェアハウスの構築は簡単です:
次にdocker hubからechoミラーを引き出します:
注意、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の場合、コマンド
最終minikube start命令は次のとおりです.
Q:kubernetesのdeployment命令?
A:このときpodを作成します.podは何ですか.1つ以上のコンテナであり、podはkubernetesスケジューリングの基本ユニットである.ミラーリングがあり、ミラーリングの実行時はコンテナなので、コンテナが必要です.k 8 sの中のコンテナはpodの形で動作します.deploymentはpodを作成するために使用されます.echoのdeployment(ファイル名deploy.yaml):
Q:echoサービスのサービス?
A:サービスは何に使いますか.k 8 sのサービスはpodにアクセスするためのもので、podが再起動される可能性があるため、再起動するとipが変わり、サービスには名前があり、名前でサービスが表すpodにアクセスすることができます.echoサービスのサービス(ファイル名service.yaml):
注意、targetPortはdeploymentのcontainerPortと一致しています.NodePortはminikubeが作成したマシンのポートをサービスのポートにマッピングし、サービスのポートをpodのポートにマッピングしたことを示しています.この場合、minikube ipを使用してマシンのipアドレスを取得し、
まとめて、appを実行するには、次の手順に従います.ミラー ミラーウェアハウス Deployment、すなわちPod、すなわち容器の担体 . Service、対外露出サービスのipとポート
前の記事でminikubeをインストールしたので、次はkubernetesのhello worldを試してみましょう.
Q:kubernetesにアプリケーションを配備するにはいくつかのステップが必要ですか?
A:kubernetesにアプリケーションを配備するには、まずアプリケーションをミラー化してからkubernetesに配備する必要があります.したがって、
ここでは、まずミラーの作成をスキップして、ネットワーク上の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を実行するには、次の手順に従います.