Kubernetes入门精简版 2.Minikube && Pod
创建、运行容器镜像
在控制台执行如下命令:
docker run busybox echo ”Hello world”
输出:
其背后的原理:
运行一个简单的 Node.js 应用
创建 app.js 和 Dockerfile 两个文件
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);
这里在 8080 端口启动了一个 HTTP 服务器。服务器会以状态码 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 .
构建过程不是由Docker客户端进行的, 而是将整个目录的文件上传到Docker 守护进程并在那里进行的。如果你在一台非Linux操作系统中使用Docker, 客户端就运行在你的宿主操作系统上,但是守护进程运行在一个虚拟机内。
提示:不要在构建目录中包含任何不需要的文件,这样会减慢构建的速度——尤其当Docker守护进程运行在一个远端机器的时候。
构建镜像时, Dockerfile 中每一条单独的指令都会创建一个新层,每一层可以被不同的镜像复用:
使用命令:
docker image
列出本地存储的镜像,你会看到刚创建的镜像信息
以下的命令可以用来运行镜像:
docker run --name kubia-container -p 8080:8080 -d kubia
命令 | 说明 |
---|---|
--name | 运行的容器名称 |
--d | 后台运行 |
-p | 本机端口 映射 容器内端口 |
现在试着通过 http://localhost:8080 访问你的应用
curl localhost:8080
配置 Minikube 运行单节点 Kubernetes 集群
使用Minikube是运行Kubernetes集群最简单、最快捷的途径。Minikube是一个构建单节点集群的工具,对于测试Kubernetes和本地开发应用都非常有用。
安装
可以参考官方提供的文档在你自己的平台上进行安装
启动
minikube start
这里很多人在启动的时候可能会遇到安装各种组件失败的情况,建议你可以使用如下命令进行
minikube start --memory=5700 --cpus=4 --registry-mirror=https://qe1j0wqo.mirror.aliyuncs.com --kubernetes-version=v1.19.0
指定代理和kubernets版本,后续重启也是用此命令启动即可。
查看集群信息:
kubectl cluster-info
可以运行
minikube ssh
登录到 Minikube VM 并从内部探索它
在Kubernetes上运行第一个应用
部署 Node.js 应用
kubectl run kubia --image=luksa/kubia --port=8080
可以使用命令kubectl get po
或者 minikuebe dashboard
查看已经运行 pod。
介绍 Pod
它使用多个共存容器的理念。这组容器就叫作 pod。一个 pod 是一组紧密相关的容器,它们总是一起运行在同一个工作节点上,以及同一个 Linux 命名空间中。每个 pod 就像一个独立的逻辑机器,拥有自己的 IP、主机名、进程等,运行 一个独立的应用程序。
容器、 pod及物理工作节点之间的关系:
在 Kubernetes 中运行 luksa/kubia
容器镜像:
访问Web应用
创建一个服务应用,作为访问 kubia 的网络连接入口:
kubectl expose po kubia --type=LoadBalancer --name kubia-http
但是 Minikube 不支持 LoadBalancer 类型的服务,因此服务不会有外部IP,所以无法直接访问应用。但是可以通过外部端口访问服务,在控制台执行以下命令:
minikube service kubia-http
此时会打开浏览器并访问 http://127.0.0.1:61478 获取响应内容
pod 的存在是短暂的,一个 pod 可能会在任何时候消失,或许因为它所在节点发生故障, 或许因为有人删除了 pod, 或者因为 pod 被从一个健康的节点剔除了。 当其中任何一种情况发生时,新的pod与替换它的pod具有不同的IP地址。这就是需要服务的地方。解决不断变化的 pod IP 地址的问题,以及在一个固定的 IP和端口 上对外暴露多个 pod。
转载自:https://juejin.cn/post/7079644476746137631