上一个章节笔者分享了选择GCP的最大理由之一的很重要的原因就是GCP对Kubernetes的支持。那么如何在GCP上快速创建一个Kubernetes的节点,并快速的部署一个Docker的实例呢? 具体步骤如下:
1.创建 K8S集群
可以通过在界面或者命令来快速创建一个K8S的集群,命令如下:
gcloud container clusters create webfrontend --zone $MY_ZONE --num-nodes 2
其中2 代码创建两个GCE的VM。
$MY_ZONE 可以替换成你需要部署的zone,比如 us-central-1-a
创建 完成后,在平台的Kubernets Enginee的页面会有一个webfrontend 的Kubernets 的集群; 同时在Compute Engine 的 VM Instance 子菜单右边应该会出现下图类似的2台虚拟机。
其本质就是VM Instance Group创建出来的实例,不信咱们点击到Instance Groups页面来看。
在来看看Instance Group的模板:
是不是印证了笔者的论述。
2. 部署一个Nginx的Docker Image到K8S的集群上面
部署一个Docker的实例到K8S上面非常的简单,只需要运行下面的命令即可。
kubectl run nginx --image=nginx:1.10.0
一个nginx的实例就在K8S集群上运行成功了,不行?通过下面的命令可以直接查看。
kubectl get pods
3. 创建一个服务,把外网地址暴露出去
注意,上面的Nginx的Docker实例虽然已经部署成功了,但是在互联网上是不能访问的,需要为其建立一个负载均衡的服务才能对外暴露出去。通过下面的命令,可以创建一个负载均衡的服务,把Docker 实例上的Nginx的内网的服务发布到互联网上。
kubectl expose deployment nginx --port 80 --type LoadBalancer
执行之后,其将会分配一个外网地址:35.226.165.17
通过下面的地址就能进行访问了:http://35.226.165.17
4. 创建一个服务,把外网地址暴露出去
有个时候,如果访问量比较的话,我们希望能够给Docker的POD扩容。
此时就可以通过下面的命令进行。
kubectl scale deployment nginx --replicas 3
扩容后,我们发现当前的Nginx实例已经在三个POD上面部署了。
就这么简单,很大程度上减少了我们维护K8S节点的难度和工作量!