5

根据 Kubernetes API 文档,可以创建/列出/删除 pod、复制控制器和服务:

http://kubernetes.io/third_party/swagger-ui/#!/v1beta1

但是在 Google Container Engine 文档中,他们似乎没有公开这个 API。您可以通过 REST API 管理的唯一资源是集群。Pod、复制控制器和服务必须使用 gcloud 进行管理。

使用 Google Container Engine 时是否可以访问 Kubernetes API?

4

2 回答 2

4

我为此主题创建了一篇博文。它包括代码和演示的视频演练。本质上,您可以从 Google Container Engine API 获取 Kubernetes 凭据。以下是如何在 golang 中执行此操作:

func newKubernetesClient(clstr *container.Cluster) (*kubernetes.Clientset, error) {
    cert, err := base64.StdEncoding.DecodeString(clstr.MasterAuth.ClientCertificate)
    if err != nil {
        return nil, err
    }
    key, err := base64.StdEncoding.DecodeString(clstr.MasterAuth.ClientKey)
    if err != nil {
        return nil, err
    }
    ca, err := base64.StdEncoding.DecodeString(clstr.MasterAuth.ClusterCaCertificate)
    if err != nil {
        return nil, err
    }
    config := &rest.Config{
        Host:            clstr.Endpoint,
        TLSClientConfig: rest.TLSClientConfig{CertData: cert, KeyData: key, CAData: ca},
        Username:        clstr.MasterAuth.Username,
        Password:        clstr.MasterAuth.Password,
        // Insecure:        true,
    }
    kbrnts, err := kubernetes.NewForConfig(config)
    if err != nil {
        return nil, err
    }
    return kbrnts, nil
}
于 2016-09-18T01:57:23.167 回答
1

在 Google Container Engine 上启动容器集群后,您将拥有一个在 GCP 项目中的 VM 上运行 kubernetes API 的主服务器。如果您运行gcloud preview container clusters list,您将看到 kubernetes API 可用的端点以及访问它所需的 http 基本身份验证凭据。

gcloud 与最新版本的 kubectl 捆绑在一起,并且能够为您使用 Google Container Engine 启动的任何容器集群执行它。例如,要列出 pod,您可以运行gcloud preview container kubectl list pods.

https://cloud.google.com/sdk/gcloud/reference/preview/container/kubectl描述了该gcloud preview container kubectl命令及其接受的标志。

于 2015-02-24T16:02:13.537 回答