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/
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和节点。