Kubernetes Getting Started Lite 2. Minikube && Pod

コンテナイメージを作成して実行する

コンソールで次のコマンドを実行します。

docker run busybox echo ”Hello world”
复制代码

出力:image.png

その背後にある理論的根拠:image.png

単純なNode.jsアプリケーションを実行します

app.jsとDockerfileの2つのファイルを作成します

app.js

const http = require('http');
const os = require('os');

console.log("Kubia server starting...");

var handler = function(request, response) {
  console.log("Received request from " + request.connection.remoteAddress);
  response.writeHead(200);
  response.end("You've hit " + os.hostname() + "\n");
};

var www = http.createServer(handler);
www.listen(8080);
复制代码

ここでは、HTTPサーバーがポート8080で開始されています。サーバーは、ステータスコード200 OKとテキストでYou've hit <hostname>各要求に応答します。

Dockerfile

FROM node:7 # from定义了基础镜像
ADD app.js /app.js #把app.js文件添加到镜像根目录
ENTRYPOINT ["node", "app.js"] #运行的命令
复制代码

コンテナイメージをビルドして実行します

docker build -t kubia .
复制代码

image.pngビルドプロセスはDockerクライアントによって実行されるのではなく、ファイルのディレクトリ全体をDockerデーモンにアップロードしてそこで実行されます。Linux以外のOSでDockerを使用する場合、クライアントはホストOSで実行されますが、デーモンは仮想マシン内で実行されます。

ヒント:ビルドディレクトリに不要なファイルを含めないでください。ビルドが遅くなります。特に、Dockerデーモンがリモートマシンで実行されている場合はそうです。

イメージをビルドするとき、Dockerfile内の個々の命令はそれぞれ新しいレイヤーを作成し、それぞれを異なるイメージで再利用できます。image.png

次のコマンドを使用します。docker imageローカルに保存されている画像を一覧表示すると、作成したばかりの画像情報が表示されます

次のコマンドを使用して、イメージを実行できます。

docker run --name kubia-container -p 8080:8080 -d kubia
复制代码
注文 説明する
- 名前 実行中のコンテナ名
--d バックグラウンドプロセス
-p ネイティブポートマッピングコンテナポート

次に、 http:// localhost:8080を介してアプリにアクセスしてみます

curl localhost:8080
复制代码

単一ノードのKubernetesクラスターを実行するようにMinikubeを構成する

Minikubeを使用するのが、Kubernetesクラスターを実行する最も簡単で最速の方法です。Minikubeは、シングルノードクラスターを構築するためのツールであり、Kubernetesのテストとローカルでのアプリケーションの開発の両方に役立ちます。

インストール

公式ドキュメントを参照して、独自のプラットフォームにインストールできます

起動

minikube start
复制代码

这里很多人在启动的时候可能会遇到安装各种组件失败的情况,建议你可以使用如下命令进行

minikuebe start --memory=5700 --cpus=4 --registry-mirror=https://qe1j0wqo.mirror.aliyuncs.com --kubernetes-version=v1.19.0
复制代码

指定代理和kubernets版本,后续重启也是用此命令启动即可。

image.png

查看集群信息:

kubectl cluster-info
复制代码

image.png

可以运行 minikube ssh登录到 Minikube VM 并从内部探索它

在Kubernetes上运行第一个应用

部署 Node.js 应用

kubectl run kubia --image=luksa/kubia --port=8080
复制代码

可以使用命令kubectl get po 或者 minikuebe dashboard 查看已经运行 pod。 image.png

介绍 Pod

它使用多个共存容器的理念。这组容器就叫作 pod。一个 pod 是一组紧密相关的容器,它们总是一起运行在同一个工作节点上,以及同一个 Linux 命名空间中。每个 pod 就像一个独立的逻辑机器,拥有自己的 IP、主机名、进程等,运行 一个独立的应用程序。

容器、 pod及物理工作节点之间的关系:

image.png

在 Kubernetes 中运行 luksa/kubia 容器镜像: image.png

访问Web应用

创建一个服务应用,作为访问 kubia 的网络连接入口:

kubectl expose po kubia --type=LoadBalancer --name kubia-http
复制代码

但是 Minikube 不支持 LoadBalancer 类型的服务,因此服务不会有外部IP,所以无法直接访问应用。但是可以通过外部端口访问服务,在控制台执行以下命令:

minikube service kubia-http
复制代码

image.png 此时会打开浏览器并访问 http://127.0.0.1:61478 获取响应内容

pod 的存在是短暂的,一个 pod 可能会在任何时候消失,或许因为它所在节点发生故障, 或许因为有人删除了 pod, 或者因为 pod 被从一个健康的节点剔除了。 当其中任何一种情况发生时,新的pod与替换它的pod具有不同的IP地址。这就是需要服务的地方。解决不断变化的 pod IP 地址的问题,以及在一个固定的 IP和端口 上对外暴露多个 pod。

おすすめ

転載: juejin.im/post/7079644476746137631