在Google容器引擎上访问Kubernetes API

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

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

然而在Google容器引擎文档中,他们似乎没有公开此API。您只能通过REST API管理集群。Pod、复制控制器和服务必须使用gcloud进行管理。
当使用Google容器引擎时,是否可以访问Kubernetes API?
2个回答

4

我为这个主题创建了一篇博客文章。它包括代码和演示的视频教程。基本上,您可以从Google容器引擎API中获取Kubernetes凭据。以下是在Go语言中执行此操作的方法:

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
}

嗨,@Cameron!这段代码有Python版本可用吗? - Abdul Rehman

1
一旦您在Google容器引擎上启动容器集群,您将在GCP项目中的VM上运行kubernetes API的主节点。如果运行gcloud preview container clusters list,则可以看到kubernetes API可用的终端点以及访问它所需的HTTP基本身份验证凭据。
gcloud捆绑了最新版本的kubectl和执行任何已使用Google容器引擎启动的容器集群的能力。例如,要列出pod,可以运行gcloud preview container kubectl list podshttps://cloud.google.com/sdk/gcloud/reference/preview/container/kubectl描述了gcloud preview container kubectl命令及其接受的标志。

好的!有没有关于如何进行API身份验证和交互的文档?谢谢! - dgaviola
1
https://github.com/GoogleCloudPlatform/kubernetes/blob/master/docs/kubectl.md 是一个很好的起点。kubectl-*.md文档有更多细节。 - CJ Cullen
1
https://cloud.google.com/container-engine/docs/kubectl 是更好的链接。 - CJ Cullen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接