Kubernetes入门 第二部

上一次

Kubernetes基础入门视频 1

Kubernetesのチュートリアルをまとめていきました。

大纲

本次我们将介绍如何使用kubectl创建Deployment。

目標的中文意思是指一个人或团体努力追求达成的结果或目标。

    • アプリケーションのデプロイについて学ぶ

 

    kubectlを使って、Kubernetes上にはじめてのアプリケーションをデプロイする

什么是 Kubernetes Deployments?

実行中のKubernetesクラスターを入手すると、その上にコンテナ化アプリケーションをデプロイすることができます。そのためには、KubernetesのDeployment の設定を作成します。

嗯嗯,我们要在集群中部署应用容器。
为此,需要进行Kubernetes的Deployment设置……

DeploymentはKubernetesにあなたのアプリケーションのインスタンスを作成し、更新する方法を指示します。

つまり、アプリケーションコンテナのインスタンスを作成・更新してくれることだと理解します。

Deploymentを作成すると、Kubernetesマスターは指定されたアプリケーションインスタンスをクラスター内の個々のノードにスケジュールします。

Deploymentを作成すると、Kubernetesマスターが指定したアプリケーションコンテナインスタンスをクラスター内のノードに組み込んでくれるというイメージだと認識しました。

一旦应用程序实例被创建,Kubernetes Deployment控制器会持续监视这些实例。

不仅可以创建和更新应用程序容器的实例,
还可以监视!
太感激了!

当托管实例的节点停止或被删除时,部署控制器会将该实例替换为集群中另一个节点上的实例。

インスタンスしているノードが停止・削除された場合、Deploymentがクラスター内の別ノードにインスタンスするイメージを受けました。

これは、マシンの故障やメンテナンスに対処するためのセルフヒーリングの仕組みを提供しています。

非常感谢。

在进行编排之前的世界中,经常使用安装脚本启动应用程序,但如果机器发生故障,无法进行恢复。

使用VMware的vMotion功能可以将虚拟机迁移到另一台主机上,实现恢复,
但一般情况下,我们并不能指望在机器故障发生时实现自动恢复。

通过创建应用程序实例并在节点之间持续运行这些实例,Kubernetes部署为应用程序管理提供了根本不同的方法。

谢谢! !)

Kubernetes上にはじめてのアプリケーションをデプロイする

※以下URLから抜粋させていただきました。
https://kubernetes.io/ja/docs/tutorials/kubernetes-basics/deploy-app/deploy-intro/

image.png

Kubernetesのコマンドラインインターフェイスであるkubectlを使用して、Deploymentを作成、管理できます。

なるほど。
kubectlでは、Deploymentを作成、管理ができるということか。

kubectl使用Kubernetes API与集群进行交互。

顺便说一句,听到对话这个词就会让我想起《机动战士高达00》,也许只有我一个这么认为吧。。

在这个模块中,我们将学习在Kubernetes集群中创建用于运行应用程序的Deployment所需的最常用的kubectl命令。

请多关照。

创建部署时,需要指定应用程序的容器镜像以及要运行的副本数量。通过更新部署,可以随后更改这些信息。

ふむふむ。

在第五和第六个教程模块中,将说明如何扩展和更新部署。

よろしくお願いいたします。

最初のDeploymentには、DockerコンテナにパッケージされたNode.jsアプリケーションを使用します。(まだNode.jsアプリケーションを作成してデプロイしていない場合、Hello Minikubeチュートリアルの通りにやってみましょう。)

由于没有部署Node.js应用程序,因此我将返回Hello Minikube教程。

部署Node.js应用程序

创建用于部署的Dockerfile。


#任意のフォルダに移動
cd <任意のフォルダ>
vim Dockerfile

#以下をコピペ

FROM node:6.14.2
EXPOSE 8080
COPY server.js .
CMD node server.js

在Dockerfile中创建用于server.js的文件。


#Dockerfileと同じフォルダへ移動
cd <Dockerfileと同じフォルダ>
vim server.js

#以下をコピペ

var http = require('http');

var handleRequest = function(request, response) {
  console.log('Received request for URL: ' + request.url);
  response.writeHead(200);
  response.end('Hello World!');
};
var www = http.createServer(handleRequest);
www.listen(8080);

创建Docker镜像 Docker


cd <Dockerfileと同じフォルダ>
ls -ltr

→Dockerfileとserver.jsが存在していること

docker build -t k8s/nodejs:1.0 .

#Dockerイメージ作成確認
docker images |grep node

→作成した「k8s/nodejs」が存在すること

我已准备好,准备返回。

交互式教程 – 应用程序的部署

因为我在本地有命令执行环境,所以我将在本地进行命令执行。
您可以直接按照教程进行操作,没有问题。


#minikube起動
#すでに実行しているようであれば不要
minikube start

ps -ef|grep minikube
→プロセスが起動していること

#ノード確認
kubectl get nodes

→ローカルホスト以外のノードが表示されないこと

#deployment作成
kubectl create deployment kubernetes-bootcamp --image=gcr.io/google-samples/kubernetes-bootcamp:v1

→「deployment.apps/kubernetes-bootcamp created」と表示されること

#deployments追加確認
kubectl get deployments

→以下のように表示されること
NAME                  READY   UP-TO-DATE   AVAILABLE   AGE
kubernetes-bootcamp   0/1     1            0           40s

#kubectlコマンドはクラスター全体のプライベートネットワークに通信を転送するプロキシを作成できます。 
#プロキシはcontrol-Cを押すことで終了でき、実行中は出力を表示しません。
#別のターミナルウィンドウを開いてからプロキシを実行します。
kubectl proxy

#これで、ホスト(オンラインターミナル)とKubernetesクラスターが接続されました。 
#プロキシを使用すると、これらの端末からAPIに直接アクセスできます。
#プロキシエンドポイントを介してホストされているすべてのAPIを確認できます。 
#たとえば、curlコマンドを使用して、APIから直接バージョンをクエリできます。
curl http://localhost:8001/version

→バージョン情報が表示されていること

#APIサーバーは、ポッド名に基づいて、各ポッドのエンドポイントを自動的に作成します。
#これは、プロキシからもアクセスできます。
#最初にポッド名を取得する必要があり、環境変数POD_NAMEに格納します。
export POD_NAME=$(kubectl get pods -o go-template --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}')

#確認
echo Name of the Pod: $POD_NAME
→Pod名が表示されること

总结

由于成功创建了Deployment,下一步我们将讨论Pod和节点。

广告
将在 10 秒后关闭
bannerAds