<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="container_v1beta1.html">Kubernetes Engine API</a> . <a href="container_v1beta1.projects.html">projects</a> . <a href="container_v1beta1.projects.zones.html">zones</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="container_v1beta1.projects.zones.clusters.html">clusters()</a></code>
</p>
<p class="firstline">Returns the clusters Resource.</p>

<p class="toc_element">
  <code><a href="container_v1beta1.projects.zones.operations.html">operations()</a></code>
</p>
<p class="firstline">Returns the operations Resource.</p>

<p class="toc_element">
  <code><a href="#getServerconfig">getServerconfig(projectId, zone, name=None, x__xgafv=None)</a></code></p>
<p class="firstline">Returns configuration info about the Google Kubernetes Engine service.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="getServerconfig">getServerconfig(projectId, zone, name=None, x__xgafv=None)</code>
  <pre>Returns configuration info about the Google Kubernetes Engine service.

Args:
  projectId: string, Deprecated. The Google Developers Console [project ID or project
number](https://support.google.com/cloud/answer/6158840).
This field has been deprecated and replaced by the name field. (required)
  zone: string, Deprecated. The name of the Google Compute Engine
[zone](/compute/docs/zones#available) to return operations for.
This field has been deprecated and replaced by the name field. (required)
  name: string, The name (project and location) of the server config to get,
specified in the format 'projects/*/locations/*'.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Kubernetes Engine service configuration.
    "defaultClusterVersion": "A String", # Version of Kubernetes the service deploys by default.
    "validNodeVersions": [ # List of valid node upgrade target versions.
      "A String",
    ],
    "validImageTypes": [ # List of valid image types.
      "A String",
    ],
    "validMasterVersions": [ # List of valid master versions.
      "A String",
    ],
    "defaultImageType": "A String", # Default image type.
  }</pre>
</div>

</body></html>