Merge branch 'master' into download_kubectl
@@ -2,6 +2,12 @@ bigheader: "Tasks"
|
|||||||
toc:
|
toc:
|
||||||
- title: Tasks
|
- title: Tasks
|
||||||
path: /docs/tasks/
|
path: /docs/tasks/
|
||||||
|
- title: Configuring Pods and Containers
|
||||||
|
section:
|
||||||
|
- title: Defining Environment Variables for a Container
|
||||||
|
path: /docs/tasks/configure-pod-container/define-environment-variable-container/
|
||||||
|
- title: Defining a Command and Arguments for a Container
|
||||||
|
path: /docs/tasks/configure-pod-container/define-command-argument-container/
|
||||||
- title: Accessing Applications in a Cluster
|
- title: Accessing Applications in a Cluster
|
||||||
section:
|
section:
|
||||||
- title: Using Port Forwarding to Access Applications in a Cluster
|
- title: Using Port Forwarding to Access Applications in a Cluster
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
<a href="/docs/hellonode/">Get Started</a>
|
<a href="/docs/hellonode/">Get Started</a>
|
||||||
<a href="/docs/">Documentation</a>
|
<a href="/docs/">Documentation</a>
|
||||||
<a href="http://blog.kubernetes.io/">Blog</a>
|
<a href="http://blog.kubernetes.io/">Blog</a>
|
||||||
|
<a href="/partners/">Partners</a>
|
||||||
<a href="/community/">Community</a>
|
<a href="/community/">Community</a>
|
||||||
<a href="/case-studies/">Case Studies</a>
|
<a href="/case-studies/">Case Studies</a>
|
||||||
</nav>
|
</nav>
|
||||||
|
|||||||
@@ -0,0 +1,208 @@
|
|||||||
|
;(function () {
|
||||||
|
var partners = [
|
||||||
|
{
|
||||||
|
type: 0,
|
||||||
|
name: 'CoreOS',
|
||||||
|
logo: 'core_os',
|
||||||
|
link: 'https://tectonic.com/',
|
||||||
|
blurb: 'Tectonic is the enterprise-ready Kubernetes product, by CoreOS. It adds key features to allow you to manage, update, and control clusters in production.'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 0,
|
||||||
|
name: 'Deis',
|
||||||
|
logo: 'deis',
|
||||||
|
link: 'https://deis.com',
|
||||||
|
blurb: 'Deis the creators of Helm, Workflow, and Steward, helps developers and operators build, deploy, manage and scale their applications on top of Kubernetes.'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 0,
|
||||||
|
name: 'Sysdig Cloud',
|
||||||
|
logo: 'sys_dig',
|
||||||
|
link: 'https://sysdig.com/blog/monitoring-kubernetes-with-sysdig-cloud/',
|
||||||
|
blurb: 'Container native monitoring with deep support for Kubernetes.'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 0,
|
||||||
|
name: 'Puppet',
|
||||||
|
logo: 'puppet',
|
||||||
|
link: 'https://puppet.com/blog/managing-kubernetes-configuration-puppet',
|
||||||
|
blurb: 'The Puppet module for Kubernetes makes it easy to manage Pods, Replication Controllers, Services and more in Kubernetes, and to build domain-specific interfaces to one\'s Kubernetes configuration.'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 0,
|
||||||
|
name: 'Citrix',
|
||||||
|
logo: 'citrix',
|
||||||
|
link: 'http://wercker.com/workflows/partners/kubernetes/',
|
||||||
|
blurb: 'Netscaler CPX gives app developers all the features they need to load balance their microservices and containerized apps with Kubernetes.'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 0,
|
||||||
|
name: 'Wercker',
|
||||||
|
logo: 'wercker',
|
||||||
|
link: 'http://wercker.com/workflows/partners/kubernetes/',
|
||||||
|
blurb: 'Wercker automates your build, test and deploy pipelines for launching containers and triggering rolling updates on your Kubernetes cluster. '
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 0,
|
||||||
|
name: 'Rancher',
|
||||||
|
logo: 'rancher',
|
||||||
|
link: 'http://rancher.com/kubernetes/',
|
||||||
|
blurb: 'Rancher is an open-source, production-ready container management platform that makes it easy to deploy and leverage Kubernetes in the enterprise.'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 0,
|
||||||
|
name: 'Red Hat',
|
||||||
|
logo: 'redhat',
|
||||||
|
link: 'https://www.openshift.com/',
|
||||||
|
blurb: 'Leverage an enterprise Kubernetes platform to orchestrate complex, multi-container apps.'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 0,
|
||||||
|
name: 'Intel',
|
||||||
|
logo: 'intel',
|
||||||
|
link: 'https://tectonic.com/press/intel-coreos-collaborate-on-openstack-with-kubernetes.html',
|
||||||
|
blurb: 'Powering the GIFEE (Google’s Infrastructure for Everyone Else), to run OpenStack deployments on Kubernetes.'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 0,
|
||||||
|
name: 'ElasticKube',
|
||||||
|
logo: 'elastickube',
|
||||||
|
link: 'https://www.ctl.io/elastickube-kubernetes/',
|
||||||
|
blurb: 'Self-service container management for Kubernetes.'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 0,
|
||||||
|
name: 'Platform9',
|
||||||
|
logo: 'platform9',
|
||||||
|
link: 'https://platform9.com/products/kubernetes/',
|
||||||
|
blurb: 'Platform9 is the open source-as-a-service company that takes all of the goodness of Kubernetes and delivers it as a managed service.'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 0,
|
||||||
|
name: 'Datadog',
|
||||||
|
logo: 'datadog',
|
||||||
|
link: 'http://docs.datadoghq.com/integrations/kubernetes/',
|
||||||
|
blurb: 'Full-stack observability for dynamic infrastructure & applications. Includes precision alerting, analytics and deep Kubernetes integrations. '
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 0,
|
||||||
|
name: 'AppFormix',
|
||||||
|
logo: 'appformix',
|
||||||
|
link: 'http://www.appformix.com/solutions/appformix-for-kubernetes/',
|
||||||
|
blurb: 'AppFormix is a cloud infrastructure performance optimization service helping enterprise operators streamline their cloud operations on any Kubernetes cloud. '
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 0,
|
||||||
|
name: 'Crunchy',
|
||||||
|
logo: 'crunchy',
|
||||||
|
link: 'http://info.crunchydata.com/blog/advanced-crunchy-containers-for-postgresql',
|
||||||
|
blurb: 'Crunchy PostgreSQL Container Suite is a set of containers for managing PostgreSQL with DBA microservices leveraging Kubernetes and Helm.'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 0,
|
||||||
|
name: 'Aqua',
|
||||||
|
logo: 'aqua',
|
||||||
|
link: 'http://blog.aquasec.com/security-best-practices-for-kubernetes-deployment',
|
||||||
|
blurb: 'Deep, automated security for your containers running on Kubernetes.'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 0,
|
||||||
|
name: 'Canonical',
|
||||||
|
logo: 'canonical',
|
||||||
|
link: 'https://jujucharms.com/canonical-kubernetes/',
|
||||||
|
blurb: 'The Canonical Distribution of Kubernetes enables you to operate Kubernetes clusters on demand on any major public cloud and private infrastructure.'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 0,
|
||||||
|
name: 'Distelli',
|
||||||
|
logo: 'distelli',
|
||||||
|
link: 'https://www.distelli.com/',
|
||||||
|
blurb: 'Pipelines from your source repositories to your Kubernetes Clusters on any cloud.'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 0,
|
||||||
|
name: 'Nuage networks',
|
||||||
|
logo: 'nuagenetworks',
|
||||||
|
link: 'https://github.com/nuagenetworks/nuage-kubernetes',
|
||||||
|
blurb: 'The Nuage SDN platform provides policy-based networking between Kubernetes Pods and non-Kubernetes environments with visibility and security monitoring.'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 1,
|
||||||
|
name: 'Apprenda',
|
||||||
|
logo: 'apprenda',
|
||||||
|
link: 'https://apprenda.com/kubernetes-support/',
|
||||||
|
blurb: 'Apprenda offers flexible and wide range of support plans for pure play Kubernetes on your choice of infrastructure, cloud provider and operating system.'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 1,
|
||||||
|
name: 'Reactive Ops',
|
||||||
|
logo: 'reactive_ops',
|
||||||
|
link: 'https://www.reactiveops.com/kubernetes/',
|
||||||
|
blurb: 'ReactiveOps has written automation on best practices for infrastructure as code on GCP & AWS using Kubernetes, helping you build and maintain a world-class infrastructure at a fraction of the price of an internal hire.'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 1,
|
||||||
|
name: 'Livewyer',
|
||||||
|
logo: 'livewyer',
|
||||||
|
link: 'https://livewyer.io/services/kubernetes-experts/',
|
||||||
|
blurb: 'Kubernetes experts that on-board applications and empower IT teams to get the most out of containerised technology.'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 1,
|
||||||
|
name: 'Deis',
|
||||||
|
logo: 'deis',
|
||||||
|
link: 'https://deis.com/services/',
|
||||||
|
blurb: 'Deis provides professional services and 24x7 operational support for any Kubernetes cluster managed by our global cluster operations team.'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 1,
|
||||||
|
name: 'Samsung SDS',
|
||||||
|
logo: 'samsung_sds',
|
||||||
|
link: 'http://www.samsungsdsa.com/cloud-infrastructure_kubernetes',
|
||||||
|
blurb: 'Samsung SDS’s Cloud Native Computing Team offers expert consulting across the range of technical aspects involved in building services targeted at a Kubernetes cluster.'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 1,
|
||||||
|
name: 'Container Solutions',
|
||||||
|
logo: 'container_solutions',
|
||||||
|
link: 'http://container-solutions.com/resources/kubernetes/',
|
||||||
|
blurb: 'Container Solutions is a premium software consultancy that focuses on programmable infrastructure, offering our expertise in software development, strategy and operations to help you innovate at speed and scale.'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
var isvContainer = document.getElementById('isvContainer')
|
||||||
|
var servContainer = document.getElementById('servContainer')
|
||||||
|
|
||||||
|
var sorted = partners.sort(function (a, b) {
|
||||||
|
if (a.name > b.name) return 1
|
||||||
|
if (a.name < b.name) return -1
|
||||||
|
return 0
|
||||||
|
})
|
||||||
|
|
||||||
|
sorted.forEach(function (obj) {
|
||||||
|
var box = document.createElement('div')
|
||||||
|
box.className = 'partner-box'
|
||||||
|
|
||||||
|
var img = document.createElement('img')
|
||||||
|
img.src = '/images/square-logos/' + obj.logo + '.png'
|
||||||
|
|
||||||
|
var div = document.createElement('div')
|
||||||
|
|
||||||
|
var p = document.createElement('p')
|
||||||
|
p.textContent = obj.blurb
|
||||||
|
|
||||||
|
var link = document.createElement('a')
|
||||||
|
link.href = obj.link
|
||||||
|
link.target = '_blank'
|
||||||
|
link.textContent = 'Learn more'
|
||||||
|
|
||||||
|
div.appendChild(p)
|
||||||
|
div.appendChild(link)
|
||||||
|
|
||||||
|
box.appendChild(img)
|
||||||
|
box.appendChild(div)
|
||||||
|
|
||||||
|
var container = obj.type ? servContainer : isvContainer
|
||||||
|
container.appendChild(box)
|
||||||
|
})
|
||||||
|
})();
|
||||||
@@ -0,0 +1,94 @@
|
|||||||
|
h5 {
|
||||||
|
font-size: 18px;
|
||||||
|
line-height: 1.5em;
|
||||||
|
margin-bottom: 2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#usersGrid a {
|
||||||
|
display: inline-block;
|
||||||
|
background-color: #f9f9f9;
|
||||||
|
}
|
||||||
|
|
||||||
|
#isvContainer, #servContainer {
|
||||||
|
position: relative;
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
#isvContainer {
|
||||||
|
margin-bottom: 80px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.partner-box {
|
||||||
|
position: relative;
|
||||||
|
width: 47%;
|
||||||
|
max-width: 48%;
|
||||||
|
min-width: 48%;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
padding: 20px;
|
||||||
|
flex: 1;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: flex-start;
|
||||||
|
}
|
||||||
|
|
||||||
|
.partner-box img {
|
||||||
|
background-color: #f9f9f9;
|
||||||
|
}
|
||||||
|
|
||||||
|
.partner-box > div {
|
||||||
|
margin-left: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.partner-box a {
|
||||||
|
color: #3576E3;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 1024px) {
|
||||||
|
.partner-box {
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: flex-start;
|
||||||
|
}
|
||||||
|
|
||||||
|
.partner-box > div {
|
||||||
|
margin: 20px 0 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 568px) {
|
||||||
|
#isvContainer, #servContainer {
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.partner-box {
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: flex-start;
|
||||||
|
width: 100%;
|
||||||
|
max-width: 100%;
|
||||||
|
min-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.partner-box > div {
|
||||||
|
margin: 20px 0 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 568px) {
|
||||||
|
#isvContainer, #servContainer {
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.partner-box {
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: flex-start;
|
||||||
|
width: 100%;
|
||||||
|
max-width: 100%;
|
||||||
|
min-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.partner-box > div {
|
||||||
|
margin: 20px 0 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
You need to have a Kubernetes cluster, and the kubectl command-line tool must
|
||||||
|
be configured to communicate with your cluster. If you do not already have a
|
||||||
|
cluster, you can create one by using
|
||||||
|
[Minikube](/docs/getting-started-guides/minikube).
|
||||||
@@ -164,10 +164,11 @@ $video-section-height: 550px
|
|||||||
margin-bottom: 20px
|
margin-bottom: 20px
|
||||||
|
|
||||||
a
|
a
|
||||||
width: 20%
|
width: 16.65%
|
||||||
float: left
|
float: left
|
||||||
font-size: 24px
|
font-size: 24px
|
||||||
font-weight: 300
|
font-weight: 300
|
||||||
|
white-space: nowrap
|
||||||
|
|
||||||
.social
|
.social
|
||||||
padding: 0 30px
|
padding: 0 30px
|
||||||
|
|||||||
@@ -222,8 +222,7 @@ $feature-box-div-width: 45%
|
|||||||
text-align: center
|
text-align: center
|
||||||
|
|
||||||
a
|
a
|
||||||
font-size: 22px
|
width: 30%
|
||||||
width: auto
|
|
||||||
padding: 0 20px
|
padding: 0 20px
|
||||||
|
|
||||||
.social
|
.social
|
||||||
|
|||||||
@@ -10,8 +10,6 @@ title: Community
|
|||||||
<h1>Community</h1>
|
<h1>Community</h1>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<section id="mainContent">
|
<section id="mainContent">
|
||||||
<main>
|
<main>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
@@ -29,20 +27,6 @@ title: Community
|
|||||||
from AWS and Openstack to Big Data and Scalability, there’s a place for you to contribute and instructions
|
from AWS and Openstack to Big Data and Scalability, there’s a place for you to contribute and instructions
|
||||||
for forming a new SIG if your special interest isn’t covered (yet).</p>
|
for forming a new SIG if your special interest isn’t covered (yet).</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="content">
|
|
||||||
<h3>Customers</h3>
|
|
||||||
<div class="company-logos">
|
|
||||||
<img src="/images/community_logos/zulily_logo.png">
|
|
||||||
<img src="/images/community_logos/we_pay_logo.png">
|
|
||||||
<img src="/images/community_logos/goldman_sachs_logo.png">
|
|
||||||
<img src="/images/community_logos/ebay_logo.png">
|
|
||||||
<img src="/images/community_logos/box_logo.png">
|
|
||||||
<img src="/images/community_logos/wikimedia_logo.png">
|
|
||||||
<img src="/images/community_logos/soundcloud_logo.png">
|
|
||||||
<img src="/images/community_logos/new_york_times_logo.png">
|
|
||||||
<img src="/images/community_logos/kabam_logo.png">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<h3>Events</h3>
|
<h3>Events</h3>
|
||||||
<div id="calendarWrapper">
|
<div id="calendarWrapper">
|
||||||
@@ -50,34 +34,6 @@ title: Community
|
|||||||
frameborder="0" scrolling="no"></iframe>
|
frameborder="0" scrolling="no"></iframe>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="content">
|
|
||||||
<h3>Partners</h3>
|
|
||||||
<p>We are working with a broad group of partners who contribute to the kubernetes core codebase, making it stronger and richer, as well as help in growing the kubernetes ecosystem supporting
|
|
||||||
a sprectrum of compelmenting platforms, from open source solutions to market-leading technologies.</p>
|
|
||||||
<div class="partner-logos">
|
|
||||||
<a href="https://coreos.com/kubernetes"><img src="/images/community_logos/core_os_logo.png"></a>
|
|
||||||
<a href="https://deis.com"><img src="/images/community_logos/deis_logo.png"></a>
|
|
||||||
<a href="https://sysdig.com/blog/monitoring-kubernetes-with-sysdig-cloud/"><img src="/images/community_logos/sysdig_cloud_logo.png"></a>
|
|
||||||
<a href="https://puppet.com/blog/managing-kubernetes-configuration-puppet"><img src="/images/community_logos/puppet_logo.png"></a>
|
|
||||||
<a href="https://www.citrix.com/blogs/2016/07/15/citrix-kubernetes-a-home-run/"><img src="/images/community_logos/citrix_logo.png"></a>
|
|
||||||
<a href="http://wercker.com/workflows/partners/kubernetes/"><img src="/images/community_logos/wercker_logo.png"></a>
|
|
||||||
<a href="http://rancher.com/kubernetes/"><img src="/images/community_logos/rancher_logo.png"></a>
|
|
||||||
<a href="https://www.openshift.com/"><img src="/images/community_logos/red_hat_logo.png"></a>
|
|
||||||
<a href="https://tectonic.com/press/intel-coreos-collaborate-on-openstack-with-kubernetes.html"><img src="/images/community_logos/intel_logo.png"></a>
|
|
||||||
<a href="https://elasticbox.com/kubernetes/"><img src="/images/community_logos/elastickube_logo.png"></a>
|
|
||||||
<a href="https://platform9.com/blog/containers-as-a-service-kubernetes-docker"><img src="/images/community_logos/platform9_logo.png"></a>
|
|
||||||
<a href="http://www.appformix.com/solutions/appformix-for-kubernetes/"><img src="/images/community_logos/appformix_logo.png"></a>
|
|
||||||
<a href="http://kubernetes.io/docs/getting-started-guides/dcos/"><img src="/images/community_logos/mesosphere_logo.png"></a>
|
|
||||||
<a href="http://docs.datadoghq.com/integrations/kubernetes/"><img src="/images/community_logos/datadog_logo.png"></a>
|
|
||||||
<a href="https://apprenda.com/kubernetes-support/"><img src="/images/community_logos/apprenda_logo.png"></a>
|
|
||||||
<a href="http://www.ibm.com/cloud-computing/"><img src="/images/community_logos/ibm_logo.png"></a>
|
|
||||||
<a href="http://info.crunchydata.com/blog/advanced-crunchy-containers-for-postgresql"><img src="/images/community_logos/crunchy_data_logo.png"></a>
|
|
||||||
<a href="https://content.mirantis.com/Containerizing-OpenStack-on-Kubernetes-Video-Landing-Page.html"><img src="/images/community_logos/mirantis_logo.png"></a>
|
|
||||||
<a href="http://blog.aquasec.com/security-best-practices-for-kubernetes-deployment"><img src="/images/community_logos/aqua_logo.png"></a>
|
|
||||||
<a href="https://jujucharms.com/canonical-kubernetes/"><img src="/images/community_logos/ubuntu_cannonical_logo.png"></a>
|
|
||||||
<a href="https://github.com/nuagenetworks/nuage-kubernetes"><img src="/images/community_logos/nuage_network_logo.png"></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</main>
|
</main>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,12 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Pod
|
||||||
|
metadata:
|
||||||
|
name: command-demo
|
||||||
|
labels:
|
||||||
|
purpose: demonstrate-command
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: command-demo-container
|
||||||
|
image: debian
|
||||||
|
command: ["printenv"]
|
||||||
|
args: ["HOSTNAME", "KUBERNETES_PORT"]
|
||||||
@@ -0,0 +1,105 @@
|
|||||||
|
---
|
||||||
|
---
|
||||||
|
|
||||||
|
{% capture overview %}
|
||||||
|
|
||||||
|
This page shows how to define commands and arguments when you run a container
|
||||||
|
in a Kubernetes Pod.
|
||||||
|
|
||||||
|
{% endcapture %}
|
||||||
|
|
||||||
|
|
||||||
|
{% capture prerequisites %}
|
||||||
|
|
||||||
|
{% include task-tutorial-prereqs.md %}
|
||||||
|
|
||||||
|
{% endcapture %}
|
||||||
|
|
||||||
|
|
||||||
|
{% capture steps %}
|
||||||
|
|
||||||
|
### Defining a command and arguments when you create a Pod
|
||||||
|
|
||||||
|
When you create a Pod, you can define a command and arguments for the
|
||||||
|
containers that run in the Pod. To define a command, include the `command`
|
||||||
|
field in the configuration file. To define arguments for the command, include
|
||||||
|
the `args` field in the configuration file. The command and arguments that
|
||||||
|
you define cannot be changed after the Pod is created.
|
||||||
|
|
||||||
|
The command and arguments that you define in the configuration file
|
||||||
|
override the default command and arguments provided by the container image.
|
||||||
|
If you define args, but do not define a command, the default command is used
|
||||||
|
with your new arguments. For more information, see
|
||||||
|
[Commands and Capabilities](/docs/user-guide/containers/).
|
||||||
|
|
||||||
|
In this exercise, you create a Pod that runs one container. The configuration
|
||||||
|
file for the Pod defines a command and two arguments:
|
||||||
|
|
||||||
|
{% include code.html language="yaml" file="commands.yaml" ghlink="/docs/tasks/configure-pod-container/commands.yaml" %}
|
||||||
|
|
||||||
|
1. Create a Pod based on the YAML configuration file:
|
||||||
|
|
||||||
|
export REPO=https://raw.githubusercontent.com/kubernetes/kubernetes.github.io/master
|
||||||
|
kubectl create -f $REPO/docs/tasks/configure-pod-container/commands.yaml
|
||||||
|
|
||||||
|
1. List the running Pods:
|
||||||
|
|
||||||
|
kubectl get pods
|
||||||
|
|
||||||
|
The output shows that the container that ran in the command-demo Pod has
|
||||||
|
completed.
|
||||||
|
|
||||||
|
1. To see the output of the command that ran in the container, view the logs
|
||||||
|
from the Pod:
|
||||||
|
|
||||||
|
kubectl logs command-demo
|
||||||
|
|
||||||
|
The output shows the values of the HOSTNAME and KUBERNETES_PORT environment
|
||||||
|
variables:
|
||||||
|
|
||||||
|
command-demo
|
||||||
|
tcp://10.3.240.1:443
|
||||||
|
|
||||||
|
### Using environment variables to define arguments
|
||||||
|
|
||||||
|
In the preceding example, you defined the arguments directly by
|
||||||
|
providing strings. As an alternative to providing strings directly,
|
||||||
|
you can define arguments by using environment variables:
|
||||||
|
|
||||||
|
env:
|
||||||
|
- name: MESSAGE
|
||||||
|
value: "hello world"
|
||||||
|
command: ["/bin/echo"]
|
||||||
|
args: ["$(MESSAGE)"]
|
||||||
|
|
||||||
|
This means you can define an argument for a Pod using any of
|
||||||
|
the techniques available for defining environment variables, including
|
||||||
|
[ConfigMaps](/docs/user-guide/configmap/)
|
||||||
|
and
|
||||||
|
[Secrets](/docs/user-guide/secrets/).
|
||||||
|
|
||||||
|
NOTE: The environment variable appears in parentheses, `"$(VAR)"`. This is
|
||||||
|
required for the variable to be expanded in the `command` or `args` field.
|
||||||
|
|
||||||
|
### Running a command in a shell
|
||||||
|
|
||||||
|
In some cases, you need your command to run in a shell. For example, your
|
||||||
|
command might consist of several commands piped together, or it might be a shell
|
||||||
|
script. To run your command in a shell, wrap it like this:
|
||||||
|
|
||||||
|
command: ["/bin/sh"]
|
||||||
|
args: ["-c", "while true; do echo hello; sleep 10;done"]
|
||||||
|
|
||||||
|
{% endcapture %}
|
||||||
|
|
||||||
|
{% capture whatsnext %}
|
||||||
|
|
||||||
|
* Learn more about [containers and commands](/docs/user-guide/containers/).
|
||||||
|
* Learn more about [configuring containers](/docs/user-guide/configuring-containers/).
|
||||||
|
* Learn more about [running commands in a container](/docs/user-guide/getting-into-containers/).
|
||||||
|
* See [Container](/docs/api-reference/v1/definitions/#_v1_container).
|
||||||
|
|
||||||
|
{% endcapture %}
|
||||||
|
|
||||||
|
|
||||||
|
{% include templates/task.md %}
|
||||||
@@ -0,0 +1,77 @@
|
|||||||
|
---
|
||||||
|
---
|
||||||
|
|
||||||
|
{% capture overview %}
|
||||||
|
|
||||||
|
This page shows how to define environment variables when you run a container
|
||||||
|
in a Kubernetes Pod.
|
||||||
|
|
||||||
|
{% endcapture %}
|
||||||
|
|
||||||
|
|
||||||
|
{% capture prerequisites %}
|
||||||
|
|
||||||
|
{% include task-tutorial-prereqs.md %}
|
||||||
|
|
||||||
|
{% endcapture %}
|
||||||
|
|
||||||
|
|
||||||
|
{% capture steps %}
|
||||||
|
|
||||||
|
### Defining an environment variable for a container
|
||||||
|
|
||||||
|
When you create a Pod, you can set environment variables for the containers
|
||||||
|
that run in the Pod. To set environment variables, include the `env` field in
|
||||||
|
the configuration file.
|
||||||
|
|
||||||
|
In this exercise, you create a Pod that runs one container. The configuration
|
||||||
|
file for the Pod defines an environment variable with name `DEMO_GREETING` and
|
||||||
|
value `"Hello from the environment"`. Here is the configuration file for the
|
||||||
|
Pod:
|
||||||
|
|
||||||
|
{% include code.html language="yaml" file="envars.yaml" ghlink="/docs/tasks/configure-pod-container/envars.yaml" %}
|
||||||
|
|
||||||
|
1. Create a Pod based on the YAML configuration file:
|
||||||
|
|
||||||
|
export REPO=https://raw.githubusercontent.com/kubernetes/kubernetes.github.io/master
|
||||||
|
kubectl create -f $REPO/docs/tasks/configure-pod-container/envars.yaml
|
||||||
|
|
||||||
|
1. List the running Pods:
|
||||||
|
|
||||||
|
kubectl get pods
|
||||||
|
|
||||||
|
The output is similar to this:
|
||||||
|
|
||||||
|
NAME READY STATUS RESTARTS AGE
|
||||||
|
envar-demo 1/1 Running 0 9s
|
||||||
|
|
||||||
|
1. Get a shell to the container running in your Pod:
|
||||||
|
|
||||||
|
kubectl exec -it envar-demo -- /bin/bash
|
||||||
|
|
||||||
|
1. In your shell, run the `printenv` command to list the environment variables.
|
||||||
|
|
||||||
|
root@envar-demo:/# printenv
|
||||||
|
|
||||||
|
The output is similar to this:
|
||||||
|
|
||||||
|
NODE_VERSION=4.4.2
|
||||||
|
EXAMPLE_SERVICE_PORT_8080_TCP_ADDR=10.3.245.237
|
||||||
|
HOSTNAME=envar-demo
|
||||||
|
...
|
||||||
|
DEMO_GREETING=Hello from the environment
|
||||||
|
|
||||||
|
1. To exit the shell, enter `exit`.
|
||||||
|
|
||||||
|
{% endcapture %}
|
||||||
|
|
||||||
|
{% capture whatsnext %}
|
||||||
|
|
||||||
|
* Learn more about [environment variables](/docs/user-guide/environment-guide/).
|
||||||
|
* Learn about [using secrets as environment variables](/docs/user-guide/secrets/#using-secrets-as-environment-variables).
|
||||||
|
* See [EnvVarSource](/docs/api-reference/v1/definitions/#_v1_envvarsource).
|
||||||
|
|
||||||
|
{% endcapture %}
|
||||||
|
|
||||||
|
|
||||||
|
{% include templates/task.md %}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Pod
|
||||||
|
metadata:
|
||||||
|
name: envar-demo
|
||||||
|
labels:
|
||||||
|
purpose: demonstrate-envars
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: envar-demo-container
|
||||||
|
image: gcr.io/google-samples/node-hello:1.0
|
||||||
|
env:
|
||||||
|
- name: DEMO_GREETING
|
||||||
|
value: "Hello from the environment"
|
||||||
@@ -3,6 +3,11 @@
|
|||||||
|
|
||||||
The Tasks section of the Kubernetes documentation is a work in progress
|
The Tasks section of the Kubernetes documentation is a work in progress
|
||||||
|
|
||||||
|
#### Configuring Pods and Containers
|
||||||
|
|
||||||
|
* [Defining Environment Variables for a Container](/docs/tasks/configure-pod-container/define-environment-variable-container/)
|
||||||
|
* [Defining a Command and Arguments for a Container](/docs/tasks/configure-pod-container/define-command-argument-container/)
|
||||||
|
|
||||||
#### Accessing Applications in a Cluster
|
#### Accessing Applications in a Cluster
|
||||||
|
|
||||||
* [Using Port Forwarding to Access Applications in a Cluster](/docs/tasks/access-application-cluster/port-forward-access-application-cluster/)
|
* [Using Port Forwarding to Access Applications in a Cluster](/docs/tasks/access-application-cluster/port-forward-access-application-cluster/)
|
||||||
|
|||||||
@@ -374,6 +374,6 @@ driver, and then cleans up.
|
|||||||
An advantage of this approach is that the overall process gets the completion guarantee of a Job
|
An advantage of this approach is that the overall process gets the completion guarantee of a Job
|
||||||
object, but complete control over what pods are created and how work is assigned to them.
|
object, but complete control over what pods are created and how work is assigned to them.
|
||||||
|
|
||||||
## Future work
|
## Scheduled Jobs
|
||||||
|
|
||||||
Support for creating Jobs at specified times/dates (i.e. cron) is expected in [1.4](https://github.com/kubernetes/kubernetes/pull/11980).
|
Support for creating Jobs at specified times/dates (i.e. cron) is available in Kubernetes [1.4](https://github.com/kubernetes/kubernetes/pull/11980). More information is available in the [scheduled job documents](http://kubernetes.io/docs/user-guide/scheduled-jobs/)
|
||||||
|
|||||||
@@ -166,7 +166,7 @@ We will use the `amqp-consume` utility to read the message
|
|||||||
from the queue and run our actual program. Here is a very simple
|
from the queue and run our actual program. Here is a very simple
|
||||||
example program:
|
example program:
|
||||||
|
|
||||||
{% include code.html language="python" file="worker.py" ghlink="/docs/user-guide/job/work-queue-1/worker.py" %}
|
{% include code.html language="python" file="worker.py" ghlink="/docs/user-guide/jobs/work-queue-1/worker.py" %}
|
||||||
|
|
||||||
Now, build an image. If you are working in the source
|
Now, build an image. If you are working in the source
|
||||||
tree, then change directory to `examples/job/work-queue-1`.
|
tree, then change directory to `examples/job/work-queue-1`.
|
||||||
@@ -204,7 +204,7 @@ Here is a job definition. You'll need to make a copy of the Job and edit the
|
|||||||
image to match the name you used, and call it `./job.yaml`.
|
image to match the name you used, and call it `./job.yaml`.
|
||||||
|
|
||||||
|
|
||||||
{% include code.html language="yaml" file="job.yaml" ghlink="/docs/user-guide/job/work-queue-1/job.yaml" %}
|
{% include code.html language="yaml" file="job.yaml" ghlink="/docs/user-guide/jobs/work-queue-1/job.yaml" %}
|
||||||
|
|
||||||
In this example, each pod works on one item from the queue and then exits.
|
In this example, each pod works on one item from the queue and then exits.
|
||||||
So, the completion count of the Job corresponds to the number of work items
|
So, the completion count of the Job corresponds to the number of work items
|
||||||
@@ -258,12 +258,12 @@ want to consider one of the other [job patterns](/docs/user-guide/jobs/#job-patt
|
|||||||
|
|
||||||
This approach creates a pod for every work item. If your work items only take a few seconds,
|
This approach creates a pod for every work item. If your work items only take a few seconds,
|
||||||
though, creating a Pod for every work item may add a lot of overhead. Consider another
|
though, creating a Pod for every work item may add a lot of overhead. Consider another
|
||||||
[example](/docs/user-guide/job/work-queue-2), that executes multiple work items per Pod.
|
[example](/docs/user-guide/jobs/work-queue-2/), that executes multiple work items per Pod.
|
||||||
|
|
||||||
In this example, we used use the `amqp-consume` utility to read the message
|
In this example, we used use the `amqp-consume` utility to read the message
|
||||||
from the queue and run our actual program. This has the advantage that you
|
from the queue and run our actual program. This has the advantage that you
|
||||||
do not need to modify your program to be aware of the queue.
|
do not need to modify your program to be aware of the queue.
|
||||||
A [different example](/docs/user-guide/job/work-queue-2), shows how to
|
A [different example](/docs/user-guide/jobs/work-queue-2/), shows how to
|
||||||
communicate with the work queue using a client library.
|
communicate with the work queue using a client library.
|
||||||
|
|
||||||
## Caveats
|
## Caveats
|
||||||
|
|||||||
@@ -108,7 +108,7 @@ called rediswq.py ([Download](rediswq.py?raw=true)).
|
|||||||
The "worker" program in each Pod of the Job uses the work queue
|
The "worker" program in each Pod of the Job uses the work queue
|
||||||
client library to get work. Here it is:
|
client library to get work. Here it is:
|
||||||
|
|
||||||
{% include code.html language="python" file="worker.py" ghlink="/docs/user-guide/job/work-queue-2/worker.py" %}
|
{% include code.html language="python" file="worker.py" ghlink="/docs/user-guide/jobs/work-queue-2/worker.py" %}
|
||||||
|
|
||||||
If you are working from the source tree,
|
If you are working from the source tree,
|
||||||
change directory to the `examples/job/work-queue-2` directory.
|
change directory to the `examples/job/work-queue-2` directory.
|
||||||
@@ -147,7 +147,7 @@ gcloud docker push gcr.io/<project>/job-wq-2
|
|||||||
|
|
||||||
Here is the job definition:
|
Here is the job definition:
|
||||||
|
|
||||||
{% include code.html language="yaml" file="job.yaml" ghlink="/docs/user-guide/job/work-queue-2/job.yaml" %}
|
{% include code.html language="yaml" file="job.yaml" ghlink="/docs/user-guide/jobs/work-queue-2/job.yaml" %}
|
||||||
|
|
||||||
Be sure to edit the job template to
|
Be sure to edit the job template to
|
||||||
change `gcr.io/myproject` to your own path.
|
change `gcr.io/myproject` to your own path.
|
||||||
|
|||||||
@@ -44,9 +44,11 @@ metadata:
|
|||||||
|
|
||||||
To configure the annotation via `kubectl`:
|
To configure the annotation via `kubectl`:
|
||||||
|
|
||||||
```shell{% raw %}
|
```shell
|
||||||
|
{% raw %}
|
||||||
kubectl annotate ns <namespace> "net.beta.kubernetes.io/network-policy={\"ingress\": {\"isolation\": \"DefaultDeny\"}}"
|
kubectl annotate ns <namespace> "net.beta.kubernetes.io/network-policy={\"ingress\": {\"isolation\": \"DefaultDeny\"}}"
|
||||||
{% endraw %}```
|
{% endraw %}
|
||||||
|
```
|
||||||
|
|
||||||
See the [NetworkPolicy getting started guide](/docs/getting-started-guides/network-policy/walkthrough) for an example.
|
See the [NetworkPolicy getting started guide](/docs/getting-started-guides/network-policy/walkthrough) for an example.
|
||||||
|
|
||||||
|
|||||||
@@ -226,7 +226,8 @@ Here is a toy example:
|
|||||||
|
|
||||||
The message is recorded along with the other state of the last (i.e., most recent) termination:
|
The message is recorded along with the other state of the last (i.e., most recent) termination:
|
||||||
|
|
||||||
```shell{% raw %}
|
```shell
|
||||||
|
{% raw %}
|
||||||
$ kubectl create -f ./pod-w-message.yaml
|
$ kubectl create -f ./pod-w-message.yaml
|
||||||
pod "pod-w-message" created
|
pod "pod-w-message" created
|
||||||
$ sleep 70
|
$ sleep 70
|
||||||
@@ -234,7 +235,8 @@ $ kubectl get pods/pod-w-message -o go-template="{{range .status.containerStatus
|
|||||||
Sleep expired
|
Sleep expired
|
||||||
$ kubectl get pods/pod-w-message -o go-template="{{range .status.containerStatuses}}{{.lastState.terminated.exitCode}}{{end}}"
|
$ kubectl get pods/pod-w-message -o go-template="{{range .status.containerStatuses}}{{.lastState.terminated.exitCode}}{{end}}"
|
||||||
0
|
0
|
||||||
{% endraw %}```
|
{% endraw %}
|
||||||
|
```
|
||||||
|
|
||||||
## What's next?
|
## What's next?
|
||||||
|
|
||||||
|
|||||||
@@ -59,12 +59,14 @@ On most providers, the pod IPs are not externally accessible. The easiest way to
|
|||||||
|
|
||||||
Provided the pod IP is accessible, you should be able to access its http endpoint with wget on port 80:
|
Provided the pod IP is accessible, you should be able to access its http endpoint with wget on port 80:
|
||||||
|
|
||||||
```shell{% raw %}
|
```shell
|
||||||
|
{% raw %}
|
||||||
$ kubectl run busybox --image=busybox --restart=Never --tty -i --generator=run-pod/v1 --env "POD_IP=$(kubectl get pod nginx -o go-template='{{.status.podIP}}')"
|
$ kubectl run busybox --image=busybox --restart=Never --tty -i --generator=run-pod/v1 --env "POD_IP=$(kubectl get pod nginx -o go-template='{{.status.podIP}}')"
|
||||||
u@busybox$ wget -qO- http://$POD_IP # Run in the busybox container
|
u@busybox$ wget -qO- http://$POD_IP # Run in the busybox container
|
||||||
u@busybox$ exit # Exit the busybox container
|
u@busybox$ exit # Exit the busybox container
|
||||||
$ kubectl delete pod busybox # Clean up the pod we created with "kubectl run"
|
$ kubectl delete pod busybox # Clean up the pod we created with "kubectl run"
|
||||||
{% endraw %}```
|
{% endraw %}
|
||||||
|
```
|
||||||
|
|
||||||
Delete the pod by name:
|
Delete the pod by name:
|
||||||
|
|
||||||
|
|||||||
@@ -136,7 +136,8 @@ On most providers, the service IPs are not externally accessible. The easiest wa
|
|||||||
|
|
||||||
Provided the service IP is accessible, you should be able to access its http endpoint with wget on the exposed port:
|
Provided the service IP is accessible, you should be able to access its http endpoint with wget on the exposed port:
|
||||||
|
|
||||||
```shell{% raw %}
|
```shell
|
||||||
|
{% raw %}
|
||||||
$ export SERVICE_IP=$(kubectl get service nginx-service -o go-template='{{.spec.clusterIP}}')
|
$ export SERVICE_IP=$(kubectl get service nginx-service -o go-template='{{.spec.clusterIP}}')
|
||||||
$ export SERVICE_PORT=$(kubectl get service nginx-service -o go-template='{{(index .spec.ports 0).port}}')
|
$ export SERVICE_PORT=$(kubectl get service nginx-service -o go-template='{{(index .spec.ports 0).port}}')
|
||||||
$ echo "$SERVICE_IP:$SERVICE_PORT"
|
$ echo "$SERVICE_IP:$SERVICE_PORT"
|
||||||
@@ -144,7 +145,8 @@ $ kubectl run busybox --generator=run-pod/v1 --image=busybox --restart=Never --
|
|||||||
u@busybox$ wget -qO- http://$SERVICE_IP:$SERVICE_PORT # Run in the busybox container
|
u@busybox$ wget -qO- http://$SERVICE_IP:$SERVICE_PORT # Run in the busybox container
|
||||||
u@busybox$ exit # Exit the busybox container
|
u@busybox$ exit # Exit the busybox container
|
||||||
$ kubectl delete pod busybox # Clean up the pod we created with "kubectl run"
|
$ kubectl delete pod busybox # Clean up the pod we created with "kubectl run"
|
||||||
{% endraw %}```
|
{% endraw %}
|
||||||
|
```
|
||||||
|
|
||||||
To delete the service by name:
|
To delete the service by name:
|
||||||
|
|
||||||
|
|||||||
|
After Width: | Height: | Size: 3.8 KiB |
|
After Width: | Height: | Size: 8.4 KiB |
|
After Width: | Height: | Size: 5.8 KiB |
|
After Width: | Height: | Size: 8.6 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 7.4 KiB |
|
After Width: | Height: | Size: 9.8 KiB |
|
After Width: | Height: | Size: 9.0 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 3.5 KiB |
|
After Width: | Height: | Size: 3.8 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 7.3 KiB |
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 8.1 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 4.4 KiB |
|
After Width: | Height: | Size: 8.8 KiB |
|
After Width: | Height: | Size: 9.2 KiB |
|
After Width: | Height: | Size: 6.8 KiB |
|
After Width: | Height: | Size: 9.4 KiB |
@@ -14,47 +14,24 @@ title: Partners
|
|||||||
|
|
||||||
<section id="users">
|
<section id="users">
|
||||||
<main>
|
<main>
|
||||||
<h5>We are working with a broad group of partners who contribute to the Kubernetes core codebase, making it stronger and richer, creating a vibrant Kubernetes ecosystem supporting a spectrum of complementing platforms, from open source solutions to market-leading technologies.</h5>
|
<h5>We are working with a broad group of partners who contribute to the Kubernetes core codebase, making it stronger and richer. There partners create a vibrant Kubernetes ecosystem supporting a spectrum of complementing platforms, from open source solutions to market-leading technologies.</h5>
|
||||||
<h3>ISV Partners</h3>
|
<h3>ISV Partners</h3>
|
||||||
<div id="usersGrid">
|
<div id="isvContainer"></div>
|
||||||
<a target="_blank" href="https://coreos.com/kubernetes"><img src="/images/community_logos/core_os_logo.png"></a>
|
<h3>Services Partners</h3>
|
||||||
<a target="_blank" href="https://deis.com"><img src="/images/community_logos/deis_logo.png"></a>
|
<div id="servContainer"></div>
|
||||||
<a target="_blank" href="https://sysdig.com/blog/monitoring-kubernetes-with-sysdig-cloud"><img src="/images/community_logos/sysdig_cloud_logo.png"></a>
|
|
||||||
<a target="_blank" href="https://puppet.com/blog/managing-kubernetes-configuration-puppet"><img src="/images/community_logos/puppet_logo.png"></a>
|
|
||||||
<a target="_blank" href="https://www.microloadbalancer.com/docs/deploy-netscaler-cpx-kubernetes-environment"><img src="/images/community_logos/citrix_logo.png"></a>
|
|
||||||
<a target="_blank" href="http://wercker.com/workflows/partners/kubernetes/"><img src="/images/community_logos/wercker_logo.png"></a>
|
|
||||||
<a target="_blank" href="http://rancher.com/kubernetes/"><img src="/images/community_logos/rancher_logo.png"></a>
|
|
||||||
<a target="_blank" href="https://www.openshift.com/"><img src="/images/community_logos/red_hat_logo.png"></a>
|
|
||||||
<a target="_blank" href="https://tectonic.com/press/intel-coreos-collaborate-on-openstack-with-kubernetes.html"><img src="/images/community_logos/intel_logo.png"></a>
|
|
||||||
<a target="_blank" href="https://elasticbox.com/kubernetes/"><img src="/images/community_logos/elastickube_logo.png"></a>
|
|
||||||
<a target="_blank" href="https://platform9.com/blog/containers-as-a-service-kubernetes-docker"><img src="/images/community_logos/platform9_logo.png"></a>
|
|
||||||
<a target="_blank" href="http://www.appformix.com/solutions/appformix-for-kubernetes/"><img src="/images/community_logos/appformix_logo.png"></a>
|
|
||||||
<a target="_blank" href="http://kubernetes.io/docs/getting-started-guides/dcos"><img src="/images/community_logos/mesosphere_logo.png"></a>
|
|
||||||
<a target="_blank" href="http://docs.datadoghq.com/integrations/kubernetes/"><img src="/images/community_logos/datadog_logo.png"></a>
|
|
||||||
<a target="_blank" href="https://apprenda.com/kubernetes-support/"><img src="/images/community_logos/apprenda_logo.png"></a>
|
|
||||||
<a target="_blank" href="http://www.ibm.com/cloud-computing/"><img src="/images/community_logos/ibm_logo.png"></a>
|
|
||||||
<a target="_blank" href="http://info.crunchydata.com/blog/advanced-crunchy-containers-for-postgresql"><img src="/images/community_logos/crunchy_data_logo.png"></a>
|
|
||||||
<a target="_blank" href="https://content.mirantis.com/Containerizing-OpenStack-on-Kubernetes-Video-Landing-Page.html"><img src="/images/community_logos/mirantis_logo.png"></a>
|
|
||||||
<a target="_blank" href="http://blog.aquasec.com/security-best-practices-for-kubernetes-deployment"><img src="/images/community_logos/aqua_logo.png"></a>
|
|
||||||
<a target="_blank" href="https://jujucharms.com/canonical-kubernetes/"><img src="/images/community_logos/ubuntu_cannonical_logo.png"></a>
|
|
||||||
</div>
|
|
||||||
</main>
|
</main>
|
||||||
</section>
|
</section>
|
||||||
<style>
|
|
||||||
h5 {
|
|
||||||
font-size: 18px;
|
|
||||||
line-height: 1.5em;
|
|
||||||
margin-bottom: 2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
#usersGrid a {
|
|
||||||
display: inline-block;
|
|
||||||
background-color: #f9f9f9;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
||||||
{% include footer.html %}
|
{% include footer.html %}
|
||||||
{% include case-study-styles.html %}
|
{% include case-study-styles.html %}
|
||||||
|
|
||||||
|
<style>
|
||||||
|
{% include partner-style.css %}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
{% include partner-script.js %}
|
||||||
|
</script>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||