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