{ "cells": [ { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "How to start a Pod\n", "==================\n", "\n", "In this notebook, we show you how to create a single container Pod.\n", "\n", "Start by importing the Kubernetes module\n", "-----------------------------------------" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true, "deletable": true, "editable": true }, "outputs": [], "source": [ "from kubernetes import client, config" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "If you are using a proxy, you can use the _client Configuration_ to setup the host that the client should use. Otherwise read the kubeconfig file." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "config.load_incluster_config()" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Pods are a stable resource in the V1 API group. Instantiate a client for that API group endpoint." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true, "deletable": true, "editable": true }, "outputs": [], "source": [ "v1=client.CoreV1Api()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "deletable": true, "editable": true, "scrolled": false }, "outputs": [], "source": [ "pod=client.V1Pod()\n", "spec=client.V1PodSpec()\n", "pod.metadata=client.V1ObjectMeta(name=\"busybox\")\n" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "In this example, we only start one container in the Pod. The container is an instance of the _V1Container_ class. " ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true, "deletable": true, "editable": true }, "outputs": [], "source": [ "container=client.V1Container()\n", "container.image=\"busybox\"\n", "container.args=[\"sleep\", \"3600\"]\n", "container.name=\"busybox\"" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "The specification of the Pod is made of a single container in its list." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true, "deletable": true, "editable": true }, "outputs": [], "source": [ "spec.containers = [container]\n", "pod.spec = spec" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Get existing list of Pods, before the creation of the new Pod." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "ret = v1.list_namespaced_pod(namespace=\"default\")\n", "for i in ret.items:\n", " print(\"%s %s %s\" % (i.status.pod_ip, i.metadata.namespace, i.metadata.name))" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "You are now ready to create the Pod." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "v1.create_namespaced_pod(namespace=\"default\",body=pod)" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Get list of Pods, after the creation of the new Pod. Note the newly created pod with name \"busybox\"" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "ret = v1.list_namespaced_pod(namespace=\"default\")\n", "for i in ret.items:\n", " print(\"%s %s %s\" % (i.status.pod_ip, i.metadata.namespace, i.metadata.name))" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Delete the Pod\n", "--------------\n", "\n", "You refer to the Pod by name, you need to add its namespace and pass some _delete_ options." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "deletable": true, "editable": true, "scrolled": false }, "outputs": [], "source": [ "v1.delete_namespaced_pod(name=\"busybox\", namespace=\"default\", body=client.V1DeleteOptions())" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true, "deletable": true, "editable": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.13" } }, "nbformat": 4, "nbformat_minor": 1 }