返回 登录
0

基于谷歌GKE使用Kubernetes

Google Container Engine (GKE) 是谷歌云提供的云服务,用于提供在线Kubernetes集群。 这项新服务允许你使用谷歌API按照需求创建一个Kubernetes集群。 集群将由一个主节点和一组充当虚拟机容器的计算节点组成。

首先,你现在需要一个谷歌云平台帐户。 更新gcloud SDK以使用容器引擎预览。 如果你尚未安装谷歌SDK,可以立即执行以下命令:

$ curl https://sdk.cloud.google.com | bash

现在,你可以登录到谷歌云和更新CLI的组件,以确保你有最新的版本。

$ gcloud auth login
$ gcloud components update

安装kubectl Kubernetes客户端:

$ gcloud components install kubectl

简单的一条命令即可开始一个基于GKE服务的Kubernetes群集:

$ gcloud container clusters create cook --num-nodes 1 --machine-type g1-small
Creating cluster cook...done.
Created [https://container.googleapis.com/v1/projects/sylvan-plane-862/zones/ \
us-central1-f/clusters/cook].
kubeconfig entry generated for cook.
NAME ZONE MASTER_VERSION ... STATUS
cook us-central1-f 1.0.3 ... RUNNING

当然,你的集群IP地址,项目名称,区等信息不会是和以上显示相同。这里主要你要看到的是如何为你生成Kubernetes的配置文件kubeconfig。这个文件位于~/.kube/config,并且包含你的容器集群的接入点,以及包含相应使用它的证书。你还可以通过谷歌云Web控制台创建集群。

一旦你的集群启动后,你就可以提交容器给它 - 这意味着你可以与底层Kubernetes主节点交互从而在你的集群中推出一组容器节点集合。容器的群组被定义为pods。 gcloud CLI为你提供了一种方便的方式来定义简单的Pods,并提交给集群。接下来,你将使用tutum / wordpress镜像来创建一个容器,它包含一个MySQL数据库。当你安装了gcloud CLI,还安装了客户端Kubernetes kubectl。 你就可以在本地验证kubectl。 它将使用在创建群集时自动生成的配置。 这将允许你从你的本地计算机安全地在远程容器集群上启动容器:

$ kubectl run wordpress --image=tutum/wordpress --port=80
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
wordpress-0d58l 1/1 Running 0 1m

一旦容器在集群节点之一上成功调度,你需要创建一个Kubernetes服务来暴露运行在容器内的应用程序给外面的世界。 这也可以通过kubectl来完成:

$ kubectl expose rc wordpress --type=LoadBalancer
NAME LABELS SELECTOR IP(S) PORT(S)
wordpress run=wordpress run=wordpress 80/TCP

expose命令用于创建一个Kubernetes服务(三个Kubernetes创建Pods和复制控制器的原语之一),同时也获得了来自负载平衡器的公用IP地址。其结果是,当你在你的容器集群列出服务时,你可以通过内部或者外部公用IP地址来访问WordPress的服务,从而在你的笔记本电脑上访问WordPress的用户界面:

$ kubectl get services
NAME ... SELECTOR IP(S) PORT(S)
wordpress ... run=wordpress 10.95.252.182 80/TCP
                            104.154.82.185

然后,你将能够开始享受WordPress了。

kubectl CLI可以用于管理在一个Kubernetes簇(即Pods、服务、复制控制器、节点)的所有资源。 正如使用kubectl下面的代码片段所示,你可以创建,删除,描述,并列出所有这些资源:

$ kubectl -h
kubectl controls the Kubernetes cluster manager.
Find more information at https://github.com/kubernetes/kubernetes.
Usage: 
 kubectl [flags]
 kubectl [command]
Available Commands: 
 get Display one or many resources
 describe Show details of a specific resource ...
 create Create a resource by filename or stdin
 replace Replace a resource by filename or stdin.
 patch Update field(s) of a resource by stdin.
 delete Delete a resource by filename, or ...
...

虽然你可以启动由单个容器组成的简单Pods,你还可以通过使用-f选项指定一个JSON或YAML文件,其中可以定义更先进的Pods:

$ kubectl create -f /path/to/pod/pod.json

Pod可在YAML中描述。 在这里,让我们来写你的Pod的JSON文件,并使用新发布的Kubernetes v1 API版本。 该Pod将启动Nginx:

{
 "kind": "Pod",
 "apiVersion": "v1",
 "metadata": {
   "name": "nginx",
   "labels": {
     "app": "nginx"
   }
 },
 "spec": {
   "containers": [
     {
     "name": "nginx",
     "image": "nginx",
     "ports": [
       {
         "containerPort": 80,
         "protocol": "TCP"
       }
     ]
     }
   ]
 }
}

启动Pod并检查其状态。 一旦它开始运行,你可以通过防火墙的80端口打开集群节点,你就可以看到Nginx的欢迎页面。 附加的例子是可用的Kubernetes GitHub链接。

$ kubectl create -f nginx.json
pods/nginx
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx 1/1 Running 0 20s
wordpress 1/1 Running 0 17m

如下命令用于要清理现场,删除你Pod,退出主节点,并删除群集:

$ kubectl delete pods nginx
$ kubectl delete pods wordpress
$ gcloud container clusters delete cook

这就对了 !你已经在谷歌云上创建了一个Kubernetes集群并已推出了作为Pod的第一个容器。现在,你可以尝试使用复制控制器和应用更先进的例子了。

原文链接: https://dzone.com/articles/using-kubernetes-on-google-gke

评论