diff --git a/_data/tasks.yml b/_data/tasks.yml index 86209a52aa..90c1f3b8b2 100644 --- a/_data/tasks.yml +++ b/_data/tasks.yml @@ -2,6 +2,12 @@ bigheader: "Tasks" toc: - title: 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 section: - title: Using Port Forwarding to Access Applications in a Cluster diff --git a/_includes/footer.html b/_includes/footer.html index f98dde06b5..15dacb72e0 100644 --- a/_includes/footer.html +++ b/_includes/footer.html @@ -4,6 +4,7 @@ Get Started Documentation Blog + Partners Community Case Studies diff --git a/_includes/partner-script.js b/_includes/partner-script.js new file mode 100644 index 0000000000..79cbf6d513 --- /dev/null +++ b/_includes/partner-script.js @@ -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) + }) +})(); \ No newline at end of file diff --git a/_includes/partner-style.css b/_includes/partner-style.css new file mode 100644 index 0000000000..a8cc125992 --- /dev/null +++ b/_includes/partner-style.css @@ -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; + } +} diff --git a/_includes/task-tutorial-prereqs.md b/_includes/task-tutorial-prereqs.md new file mode 100644 index 0000000000..a9cf90d265 --- /dev/null +++ b/_includes/task-tutorial-prereqs.md @@ -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). diff --git a/_sass/_desktop.sass b/_sass/_desktop.sass index 033e998ba0..9c02fbcf6c 100644 --- a/_sass/_desktop.sass +++ b/_sass/_desktop.sass @@ -164,10 +164,11 @@ $video-section-height: 550px margin-bottom: 20px a - width: 20% + width: 16.65% float: left font-size: 24px font-weight: 300 + white-space: nowrap .social padding: 0 30px diff --git a/_sass/_tablet.sass b/_sass/_tablet.sass index ce9bcd941d..15d5b496f4 100644 --- a/_sass/_tablet.sass +++ b/_sass/_tablet.sass @@ -222,8 +222,7 @@ $feature-box-div-width: 45% text-align: center a - font-size: 22px - width: auto + width: 30% padding: 0 20px .social diff --git a/community.html b/community.html index f47bff33e7..9ef63c1b66 100644 --- a/community.html +++ b/community.html @@ -10,8 +10,6 @@ title: Community

Community

- -
@@ -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 for forming a new SIG if your special interest isn’t covered (yet).

-
-

Customers

-
- - - - - - - - - -
-

Events

@@ -50,34 +34,6 @@ title: Community frameborder="0" scrolling="no">
-
-

Partners

-

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.

-
- - - - - - - - - - - - - - - - - - - - - -
-
diff --git a/docs/tasks/configure-pod-container/commands.yaml b/docs/tasks/configure-pod-container/commands.yaml new file mode 100644 index 0000000000..8d58007db4 --- /dev/null +++ b/docs/tasks/configure-pod-container/commands.yaml @@ -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"] diff --git a/docs/tasks/configure-pod-container/define-command-argument-container.md b/docs/tasks/configure-pod-container/define-command-argument-container.md new file mode 100644 index 0000000000..22ac9b5e04 --- /dev/null +++ b/docs/tasks/configure-pod-container/define-command-argument-container.md @@ -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 %} diff --git a/docs/tasks/configure-pod-container/define-environment-variable-container.md b/docs/tasks/configure-pod-container/define-environment-variable-container.md new file mode 100644 index 0000000000..2cba3c55f1 --- /dev/null +++ b/docs/tasks/configure-pod-container/define-environment-variable-container.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 %} diff --git a/docs/tasks/configure-pod-container/envars.yaml b/docs/tasks/configure-pod-container/envars.yaml new file mode 100644 index 0000000000..97b296ac52 --- /dev/null +++ b/docs/tasks/configure-pod-container/envars.yaml @@ -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" diff --git a/docs/tasks/index.md b/docs/tasks/index.md index dcd9120e1b..fc08a0469a 100644 --- a/docs/tasks/index.md +++ b/docs/tasks/index.md @@ -3,6 +3,11 @@ 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 * [Using Port Forwarding to Access Applications in a Cluster](/docs/tasks/access-application-cluster/port-forward-access-application-cluster/) diff --git a/docs/user-guide/jobs.md b/docs/user-guide/jobs.md index 266444753a..4e42b8fcef 100644 --- a/docs/user-guide/jobs.md +++ b/docs/user-guide/jobs.md @@ -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 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/) diff --git a/docs/user-guide/jobs/work-queue-1/index.md b/docs/user-guide/jobs/work-queue-1/index.md index e579f4b295..9b0735b574 100644 --- a/docs/user-guide/jobs/work-queue-1/index.md +++ b/docs/user-guide/jobs/work-queue-1/index.md @@ -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 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 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`. -{% 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. 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, 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 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. -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. ## Caveats diff --git a/docs/user-guide/jobs/work-queue-2/index.md b/docs/user-guide/jobs/work-queue-2/index.md index 328ece5a64..fc31850c91 100644 --- a/docs/user-guide/jobs/work-queue-2/index.md +++ b/docs/user-guide/jobs/work-queue-2/index.md @@ -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 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, change directory to the `examples/job/work-queue-2` directory. @@ -147,7 +147,7 @@ gcloud docker push gcr.io//job-wq-2 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 change `gcr.io/myproject` to your own path. diff --git a/docs/user-guide/networkpolicies.md b/docs/user-guide/networkpolicies.md index a45534ad96..d1fe76d7ba 100644 --- a/docs/user-guide/networkpolicies.md +++ b/docs/user-guide/networkpolicies.md @@ -44,9 +44,11 @@ metadata: To configure the annotation via `kubectl`: -```shell{% raw %} +```shell +{% raw %} kubectl annotate ns "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. diff --git a/docs/user-guide/production-pods.md b/docs/user-guide/production-pods.md index c345ada200..440ac4619a 100644 --- a/docs/user-guide/production-pods.md +++ b/docs/user-guide/production-pods.md @@ -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: -```shell{% raw %} +```shell +{% raw %} $ kubectl create -f ./pod-w-message.yaml pod "pod-w-message" created $ sleep 70 @@ -234,7 +235,8 @@ $ kubectl get pods/pod-w-message -o go-template="{{range .status.containerStatus Sleep expired $ kubectl get pods/pod-w-message -o go-template="{{range .status.containerStatuses}}{{.lastState.terminated.exitCode}}{{end}}" 0 -{% endraw %}``` +{% endraw %} +``` ## What's next? diff --git a/docs/user-guide/walkthrough/index.md b/docs/user-guide/walkthrough/index.md index 4cc23cb71e..4c095e1c05 100644 --- a/docs/user-guide/walkthrough/index.md +++ b/docs/user-guide/walkthrough/index.md @@ -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: -```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}}')" u@busybox$ wget -qO- http://$POD_IP # Run in the busybox container u@busybox$ exit # Exit the busybox container $ kubectl delete pod busybox # Clean up the pod we created with "kubectl run" -{% endraw %}``` +{% endraw %} +``` Delete the pod by name: diff --git a/docs/user-guide/walkthrough/k8s201.md b/docs/user-guide/walkthrough/k8s201.md index 2f1f62ad1f..782bfbe418 100644 --- a/docs/user-guide/walkthrough/k8s201.md +++ b/docs/user-guide/walkthrough/k8s201.md @@ -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: -```shell{% raw %} +```shell +{% raw %} $ 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}}') $ 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$ exit # Exit the busybox container $ kubectl delete pod busybox # Clean up the pod we created with "kubectl run" -{% endraw %}``` +{% endraw %} +``` To delete the service by name: diff --git a/images/community_logos/distelli_logo.png b/images/community_logos/distelli_logo.png new file mode 100644 index 0000000000..d31e1d4226 Binary files /dev/null and b/images/community_logos/distelli_logo.png differ diff --git a/images/square-logos/appformix.png b/images/square-logos/appformix.png new file mode 100644 index 0000000000..47ad7e9722 Binary files /dev/null and b/images/square-logos/appformix.png differ diff --git a/images/square-logos/apprenda.png b/images/square-logos/apprenda.png new file mode 100644 index 0000000000..f2e52068b1 Binary files /dev/null and b/images/square-logos/apprenda.png differ diff --git a/images/square-logos/aqua.png b/images/square-logos/aqua.png new file mode 100644 index 0000000000..ae480d582a Binary files /dev/null and b/images/square-logos/aqua.png differ diff --git a/images/square-logos/canonical.png b/images/square-logos/canonical.png new file mode 100644 index 0000000000..680b80cde8 Binary files /dev/null and b/images/square-logos/canonical.png differ diff --git a/images/square-logos/citrix.png b/images/square-logos/citrix.png new file mode 100644 index 0000000000..76a5682209 Binary files /dev/null and b/images/square-logos/citrix.png differ diff --git a/images/square-logos/container_solutions.png b/images/square-logos/container_solutions.png new file mode 100644 index 0000000000..a386cf9ab2 Binary files /dev/null and b/images/square-logos/container_solutions.png differ diff --git a/images/square-logos/core_os.png b/images/square-logos/core_os.png new file mode 100644 index 0000000000..395c14ac2d Binary files /dev/null and b/images/square-logos/core_os.png differ diff --git a/images/square-logos/crunchy.png b/images/square-logos/crunchy.png new file mode 100644 index 0000000000..5f1e631c00 Binary files /dev/null and b/images/square-logos/crunchy.png differ diff --git a/images/square-logos/datadog.png b/images/square-logos/datadog.png new file mode 100644 index 0000000000..82d6d11aaf Binary files /dev/null and b/images/square-logos/datadog.png differ diff --git a/images/square-logos/deis.png b/images/square-logos/deis.png new file mode 100644 index 0000000000..278b8a44e0 Binary files /dev/null and b/images/square-logos/deis.png differ diff --git a/images/square-logos/distelli.png b/images/square-logos/distelli.png new file mode 100644 index 0000000000..d31e1d4226 Binary files /dev/null and b/images/square-logos/distelli.png differ diff --git a/images/square-logos/elastickube.png b/images/square-logos/elastickube.png new file mode 100644 index 0000000000..957c55a8e6 Binary files /dev/null and b/images/square-logos/elastickube.png differ diff --git a/images/square-logos/intel.png b/images/square-logos/intel.png new file mode 100644 index 0000000000..0100964f55 Binary files /dev/null and b/images/square-logos/intel.png differ diff --git a/images/square-logos/livewyer.png b/images/square-logos/livewyer.png new file mode 100644 index 0000000000..e49b2d55c9 Binary files /dev/null and b/images/square-logos/livewyer.png differ diff --git a/images/square-logos/nuagenetworks.png b/images/square-logos/nuagenetworks.png new file mode 100644 index 0000000000..c84a1414a7 Binary files /dev/null and b/images/square-logos/nuagenetworks.png differ diff --git a/images/square-logos/platform9.png b/images/square-logos/platform9.png new file mode 100644 index 0000000000..8a3bc5a634 Binary files /dev/null and b/images/square-logos/platform9.png differ diff --git a/images/square-logos/puppet.png b/images/square-logos/puppet.png new file mode 100644 index 0000000000..b07f038315 Binary files /dev/null and b/images/square-logos/puppet.png differ diff --git a/images/square-logos/rancher.png b/images/square-logos/rancher.png new file mode 100644 index 0000000000..585c0aadf6 Binary files /dev/null and b/images/square-logos/rancher.png differ diff --git a/images/square-logos/reactive_ops.png b/images/square-logos/reactive_ops.png new file mode 100644 index 0000000000..5d699e0194 Binary files /dev/null and b/images/square-logos/reactive_ops.png differ diff --git a/images/square-logos/redhat.png b/images/square-logos/redhat.png new file mode 100644 index 0000000000..776563d7c4 Binary files /dev/null and b/images/square-logos/redhat.png differ diff --git a/images/square-logos/samsung_sds.png b/images/square-logos/samsung_sds.png new file mode 100644 index 0000000000..2afbc1b5a0 Binary files /dev/null and b/images/square-logos/samsung_sds.png differ diff --git a/images/square-logos/sys_dig.png b/images/square-logos/sys_dig.png new file mode 100644 index 0000000000..c49f58a670 Binary files /dev/null and b/images/square-logos/sys_dig.png differ diff --git a/images/square-logos/wercker.png b/images/square-logos/wercker.png new file mode 100644 index 0000000000..d8434fed90 Binary files /dev/null and b/images/square-logos/wercker.png differ diff --git a/partners/index.html b/partners/index.html index c47f0998a7..40dd076b30 100644 --- a/partners/index.html +++ b/partners/index.html @@ -14,47 +14,24 @@ title: Partners
-
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.
+
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.

ISV Partners

-
- - - - - - - - - - - - - - - - - - - - -
+
+

Services Partners

+
- {% include footer.html %} {% include case-study-styles.html %} + + + +