Google Kubernetes Engine（GKE）使用初探
本文只是一个入门指南，主要指导能快速开始上手基于 Google Cloud Platform 的 GKE 服务（k8s 托管服务）。
容器 GKE k8s
本文只是一个入门指南，主要指导能快速开始上手基于 Google Cloud Platform 的 GKE 服务（k8s 托管服务）。
![](/data/attachment/album/201804/15/095240l1oiz1oo1t14vjig.jpg)


### 概述


Google 的 k8s 在 2017 年已经从容器编排领域的竞争中取得主导地位，从 [Docker](https://www.docker.com/) 之前的一度排挤到最终完全拥抱 k8s，显然 k8s 已经成了目前业界的标准。


但是到目前为止能提供 k8s 完全托管服务的云服务商少之又少，即便是目前在云提供商有统治力的 AWS 也没有完全提供 k8s 托管服务，仅仅提供有限的定制服务，在这一方面并不成熟。


然而 Google 的 k8s 托管服务，即 GKE，却将 k8s 托管服务做到了极致（至少目前看来），不仅提供了全套的 k8s 托管服务，更引人注目的是 Google 已然将 Autoscaler 和 k8s 集成，实现了 k8s 节点的自动伸缩机制，能根据 pod 的需求自动化添加或删除节点，当现有节点无法承载新的服务时会自动添加节点来满足需求，当现有节点足够空闲时会启用调节机制自动化收缩节点，从某种意义上来说这几乎做到了无服务器的理念。


然而这也许只是冰山一角，更多强大的功能还需要进一步探索，本文只是一个入门指南，主要指导能快速开始上手基于 Google Cloud Platform 的 [GKE](https://cloud.google.com/kubernetes-engine/?hl=zh-cn) 服务（k8s 托管服务）。


### GKE 入门指南


接下来我们一步步指引如何使用 GKE 来部署服务，前提是对 k8s 有所了解，能简单使用 kubectl 命令。


#### 1. 安装并配置 Google Cloud SDK


Google Cloud SDK 是 访问 GCP（Google Cloud Platform）平台各种资源的命令行工具集，类似 aws 的 aws 命令行工具。 


安装和配置就不多说了，点击下面链接选择相应操作系统版本的 tar 包下载，然后解压，在 PATH 环境变量中添加 `google-cloud-sdk/bin` 即可： 


<https://cloud.google.com/sdk/?hl=zh-cn> 


#### 2. 初始化 Google Cloud SDK


初始化 Google Cloud SDK 是将 `gcloud` 命令和 Google 账号绑定起来并设置一些其他的默认值，比如区域，代理，账号，项目（Google 账号中新建的项目）之类的。


在执行 `gcloud init` 初始化之前得先给 `gcloud` 配置 HTTP 代理（GFW 你懂得），具体配置见我之前[这篇文章](https://blog.csdn.net/qianghaohao/article/details/79942485)。然后执行 `gcloud init` 完成初始化，直接根据向导来即可。 


#### 3. 到 Google Cloud Platform 控制台建一个 k8s 集群，记住名称


![](/data/attachment/album/201804/15/095255zryhrknfhfjqu5fd.png) 


#### 4. 安装 gcloud kubectl 组件



```
gcloud components install kubectl 
```

#### 5. 获取群集的身份验证凭据


创建群集后，您需要获取身份验证凭据以与群集进行交互。要为集群进行身份验证，请运行以下命令： 



```
gcloud container clusters get-credentials <上一步创建的集群名称> 
```

#### 6. 接下来部署一个简单的 hello-server 服务到 GKE



```
kubectl run hello-server --image gcr.io/google-samples/hello-app:1.0 --port 8080
```

### 相关链接


* <https://cloud.google.com/kubernetes-engine/docs/quickstart>
* <https://cloud.google.com/sdk/docs/quickstart-macos?hl=zh-cn>


### 附录


#### gloud 常用命令



```
gcloud auth login --no-launch-browser # gcloud 登录认证
gcloud config set compute/zone [COMPUTE_ZONE] # 设置默认区域
gcloud components list # 列出可安装组件
gcloud components install [组件名称] # 安装组件
gcloud components update  # 更新所有已安装组件
gcloud components remove [组件名称] # 卸载已安装组件
```

#### 设置 gcloud http 代理



```
gcloud config set proxy/type http
gcloud config set proxy/address 127.0.0.1
gcloud config set proxy/port 1087
```

#### 设置集群 docker 私服认证



```
kubectl create secret docker-registry regcred --docker-server=<your-registry-server> --docker-username=<your-name> --docker-password=<your-pword> --docker-email=<your-email>
```

**注意**：设置 docker 私服后，要在 GKE 部署 k8s 服务，必须得在 k8s 资源文件（yaml 格式）中的 container   
同一级指定 imagePullSecrets 键，要不然仍然无法拉取配置的私服的镜像，示例资源文件如下：



```
apiVersion: v1
kind: Pod
metadata:
  name: private-reg
spec:
  containers:
  - name: private-reg-container
    image: <your-private-image>
  imagePullSecrets:
  - name: regcred
```

#### 查看集群 docker 私服配置



```
kubectl get secret regcred --output=yaml      #base64 格式 显示
kubectl get secret regcred --output="jsonpath={.data.\.dockerconfigjson}" | base64 -d # base64
```
