Open fayeah opened 4 years ago
index.js
var http=require('http');
var server = http.createServer(function(req, response) {
response.writeHead(200, {"Content-Type": "text/pain"});
response.end("Hellow world\n");
}
)
server.listen(8000);
Dockerfile
FROM mhart/alpine-node
COPY index.js .
CMD node index.js
昨天接到了一个任务,for security让我自定义istio的response header。那我就在本地玩玩看咯,只是由于村里的网络太差,在本地run这些需要下载很多images和dependency。所以这个任务我只做到了使用minikube在Kubernetes上run了一个node服务,由于第一次setup,也是遇到了不少坑。记录一下。
prerequirement: Docker, minikube, kubectl, docker-machine-driver-vmware (我本地的版本Docker-18.06.1-ce-mac73 (26764),minikube-v1.6.2, kubectl-v1.17.0)
Minikube 最大的好处是我们可以在本地run Kubernetes,非常方便地创建和销毁cluster。
使用Minikube创建cluster。
可以指定cpus,memory, vm等。我们有几个vm driver可以选择,但是hyperkit使用起来ip好像有点问题,后面download image一直没办法下载。vmwarefusion是deprecated,不建议使用。我用vmware还比较顺畅。
看到最后一行Done,就完成了创建。
reuse minikube Docker Daemon.
由于我想使用我本地的Dockerfile和server.js来build,而minikube也刚好有内嵌的Docker Daemon,所以我可以使用一个命令将docker能够直接访问minikube vm的docker env。
前后docker image对比:
Build Docker image
到Dockerfile和server.js目录下
Run in Minikube with built image
Check server is running
make sure the pod is running
Create Kubernetes service
默认情况下,该pod只能在kubernetes cluster内部访问,为了能够在外部也访问到,我们需要创建一个Kubernetes service。
然后,检查下刚刚创建的service
open service
会自动打开一个浏览器访问前面启动的服务。至此,在本地kubernetes 集群并且创建pod,使其在外部能够访问,基本已经完成。
下一步就是,destroy。没错,我们创建的目的就是为了销毁!
Minikube clean up
minikube,kubenetes,istio等还有许许多多需要发掘,不过我还是先做mobile吧,ops太伤脑袋了……