安装并在本地 Kubernetes 上运行服务

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/muumian123/article/details/88297447

前提条件

Win10 专业版/企业版

1 安装

1.1 Docker

下载 Docker:https://hub.docker.com/editions/community/docker-ce-desktop-windows

为了下载 Docker,你必须先注册账号并登录。

如果你之前下载过 Docker Toolbox,可能会出现“could not read CA certificate “C:\Users\username\.docker\machine\machines\default\ca.pem”: open C:\Users\yqiu29.docker\machine\machines\default\ca.pem: The system cannot find the file specified.” 的错误,解决方式如下:

控制面板 -> 系统与安全 -> 系统 -> 高级系统设置 -> 环境变量,删除掉以“DOCKER_”开头的四个环境变量。接下来在 Powershell 里输入如下命令:

docker-machine env -u

结果的最后一行将提示您如何设置环境,复制环境,然后执行它。复制第二个红色框和符号以及以下内容,将其复制并运行。

1.2  下载 Kubectl:

https://storage.googleapis.com/kubernetes-release/release/v1.10.0/bin/windows/amd64/kubectl.exe

1.3 下载 minikube:

https://github.com/kubernetes/minikube/releases

1.4 将下载好的 minikube 和 kubectl 移动到同一文件夹下并添加文件夹所在路径至环境变量中

2 设置 Hyper-V 虚拟交换机 

2.1 开启 Hyper-V

控制面板 -> 程序 -> 打开或关闭 Windows 特性 -> 选择 Hyper-V -> 点击 OK,之后你需要重启电脑

2.2 打开 Hyper-V Manager -> Virtual Switch Manager

2.3 点击 New virtual network switch 新建交换机

3 本地启动 Kubernetes 集群

使用如下命令:

minikube start --registry-mirror=https://registry.docker-cn.com --vm-driver="hyperv" --memory=4096 --hyperv-virtual-switch="MinikubeSwitch"

如果出现报错,使用 “minikube delete” 删除之前下载的东西,并删除掉 “.Minikube”文件夹,接着再次运行之前的命令。

可以使用如下命令打开 Kubernetes 控制台:

minikube dashboard

4 Docker 构建镜像

4.1 举一个简单的例子,先写一个小的服务:

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);

4.2 编写 Dockerfile:

FROM node:6.14.2               
 
EXPOSE 8080                   
COPY server.js .
CMD node server.js
  • FROM:图像文件继承官方节点图像。 冒号代表标签。 在这种情况下,标记是6.14.2,即 6.14.2版本的节点。
  • COPY:将当前目录中的所有文件(除Dockerignore排除的路径除外)复制到映像文件目录中。
  • EXPOSE:暴露容器3000端口,允许外部连接到端口。

4.3 创建镜像

# docker image build -t [image-name]:[tag] .
docker image build -t test:0.0.1 .

最后一个点表示Dockerfile文件所在的路径。 在上面的示例中,它是当前路径,因此它是一个点

4.4 创建容器

# docker container run --rm -p [local port]:[container port] -i -t [image-name]:[tag]
docker container run --rm -p 8000:8080 -i -t test:0.0.1
  • -p参数:容器的3000端口映射到本地8000端口
  • -i-t参数:容器的Shell映射到当前Shell,然后在本机窗口中键入的命令将传递到容器中

4.5 发布镜像

# Log in to the docker hub account
$ docker login
 
# Next, mark the local image with the username and version.
# docker image tag [imageName] [username]/[repository]:[tag]
$ docker image tag test:0.0.1 mumuain/test:0.0.1
 
# You can also rebuild the image file without marking the username.
$ docker image build-t [username]/[repository]:[tag] .
 
# Finally,release the image
# docker image push [username]/[repository]:[tag]
$ docker image push mumuain/test:0.0.1

5 在 Kubernetes 上运行服务

  • Create Deployment

kubectl create deployment <deployment-name> --image=<docker image url+name>
  • View Deployment
kubectl get deployments
  • View Pod
kubectl get pods
  • Create Service
kubectl expose deployment <deployment-name> --type=LoadBalancer --port=8080
  • View Service
kubectl get services
  • Run Service
minikube service hello-node
  • Clear Service and Deployment
kubectl delete service hello-node

kubectl delete deployment hello-node

参考资料

https://baijiahao.baidu.com/s?id=1591887487395526427&wfr=spider&for=pc

https://kubernetes.io/docs/tutorials/hello-minikube/

https://hackernoon.com/containerizing-a-node-js-api-using-docker-with-kubernetes-and-minikube-30255fd33ef9

猜你喜欢

转载自blog.csdn.net/muumian123/article/details/88297447
今日推荐