本文演示如何在 kubernetes 中部署应用,关于如何安装 kubernetes, 请参考 在Ubuntu 18.04 中安装 Kubernetes
部署nginx
在开始实验之前,通过 docker search 命名查找可用的 nginx 镜像,执行:
1 | docker search nginx |
系统输出:
1 | NAME DESCRIPTION STARS OFFICIAL AUTOMATED |
可以看到有官方的镜像,下面我们就使用该官方镜像进行部署。
为部署nginx, 在master节点执行以下命令:
建立一个部署
1 | kubectl create deployment nginx --image=nginx |
系统显示:
1 | deployment.apps/nginx created |
立即使用
1 | kubectl get deployment |
1 | NAME READY UP-TO-DATE AVAILABLE AGE |
可以看到,当前已经建立了Deployment,但还没有处于 Ready 状态。
转换到工作节点(worker-node), 用 docker images 进行查看, 可以看到,在本地还没有 nginx 的镜像。
过3~5分钟后(视网络快慢),在用docker images 进行查看,就可以看到
1 | nginx latest 5a3221f0137b 3 weeks ago 126MB |
说明 nginx 镜像已经被下载到本地,再运行 kubectl get deployment, 可以看到,部署已经成功了。
1 | NAME READY UP-TO-DATE AVAILABLE AGE |
也可以运行以下命令,查看 deployment 的详情
1 | kubectl describe deployments hello-world |
系统显示:
1 | Name: nginx |
建立一个服务
在 master 节点中运行以下命令:
1 | kubectl create service nodeport nginx --tcp 80:80 |
系统显示:
1 | service/nginx created |
执行 get service 命令可以参考当前部署的服务:
1 | kubectl get svc |
系统显示:
1 | NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE |
也可执行 kubectl describe
1 | kubectl describe nginx |
然后,可以在 master 机器上执行:
1 | curl localhost:32034 |
可以看到, nginx 默认的 index.html 的内容被输出:
1 |
|
也可以在 Host (虚拟机的宿主机)上打开浏览器,访问:
1 | http://192.168.43.10:32034/ |
或是:
1 | http://192.168.43.30:32034/ |
都可以看到 nginx 的默认 index 界面