首页 文章

访问Google Container Engine上的Kubernetes API

提问于
浏览
4

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

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

但是,在Google容器引擎文档中,他们似乎没有公开此API . 您可以通过REST API管理的唯一资源是群集 . 必须使用gcloud管理Pod,复制控制器和服务 .

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

2 回答

  • 3

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

    gcloud捆绑了最新版本的kubectl,并能够为您使用Google容器引擎启动的任何容器群集执行该功能 . 例如,要列出pod,您可以运行 gcloud preview container kubectl list pods .

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

  • 1

    我为这个主题创建了一个blog post . 它包括代码和演示的视频演练 . 从本质上讲,您可以从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
    }
    

相关问题