Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 7616bdd

Browse files
committed
Added examples for Jobs and Hooks
1 parent 5e512ff commit 7616bdd

File tree

3 files changed

+163
-0
lines changed

3 files changed

+163
-0
lines changed

examples/create_job.py

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
""" Creating a Job in a specific namespace"""
2+
3+
from kubernetes import client, config
4+
5+
# Fetching and loading Kubernetes Information
6+
config.load_kube_config()
7+
8+
extension = client.BatchV1Api()
9+
10+
# Volume
11+
volume = client.V1Volume(
12+
name="test-volume",
13+
empty_dir=client.V1EmptyDirVolumeSource(medium=""))
14+
15+
# Container
16+
container = client.V1Container(
17+
name="jobtest",
18+
image="nginx:1.7.9",
19+
image_pull_policy="IfNotPresent",
20+
ports=[client.V1ContainerPort(container_port=80)],
21+
volume_mounts=[client.V1VolumeMount(name=volume.name, mount_path="/kube-example")]
22+
)
23+
24+
# Init-Container
25+
init_container = client.V1Container(
26+
name="init-container",
27+
image="alpine",
28+
image_pull_policy="IfNotPresent",
29+
command=[
30+
"touch kube-test.txt"
31+
],
32+
volume_mounts=[client.V1VolumeMount(name=volume.name, mount_path="/kube-example")]
33+
)
34+
35+
# Template
36+
template = client.V1PodTemplateSpec(
37+
metadata=client.V1ObjectMeta(labels={"app": "jobtest"}),
38+
spec=client.V1PodSpec(init_containers=[init_container], containers=[container], volumes=[volume], restart_policy="Never")
39+
)
40+
41+
# Spec
42+
spec_pod = client.V1JobSpec(
43+
ttl_seconds_after_finished=0,
44+
template=template
45+
)
46+
47+
# job
48+
job = client.V1Job(
49+
kind="Job",
50+
metadata=client.V1ObjectMeta(name="jobtest"),
51+
spec=spec_pod
52+
)
53+
54+
extension.create_namespaced_job(namespace="kube-client", body=job)
55+
56+

examples/post_stop_hook.py

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
"""Example for Post Start Hook """
2+
3+
from kubernetes import client, config
4+
5+
# Fetching and loading Kubernetes Information
6+
config.load_kube_config()
7+
8+
extension = client.ExtensionsV1beta1Api()
9+
10+
# Container
11+
container = client.V1Container(
12+
name="hooktest",
13+
image="nginx:1.7.9",
14+
image_pull_policy="IfNotPresent",
15+
ports=[client.V1ContainerPort(container_port=80)],
16+
17+
lifecycle=client.V1Lifecycle(
18+
post_start=client.V1Handler(
19+
_exec=client.V1ExecAction(
20+
command=[
21+
"touch kube-test.txt"
22+
]
23+
24+
)#closing for V1ExecAction
25+
26+
)#closing for V1Handler
27+
28+
)#closing for V1Lifecycle
29+
)
30+
31+
# Template
32+
template = client.V1PodTemplateSpec(
33+
metadata=client.V1ObjectMeta(labels={"app": "hooktest"}),
34+
spec=client.V1PodSpec(containers=[container]))
35+
36+
37+
# Spec
38+
spec = client.ExtensionsV1beta1DeploymentSpec(
39+
replicas=1,
40+
template=template)
41+
42+
#Deployment
43+
deployment = client.ExtensionsV1beta1Deployment(
44+
api_version="extensions/v1beta1",
45+
kind="Deployment",
46+
metadata=client.V1ObjectMeta(name="hooktest-deployment"),
47+
spec=spec)
48+
49+
# Creation of the Deployment in specified namespace
50+
extension.create_namespaced_deployment(namespace="kube-client", body=deployment)
51+
52+

examples/pre_stop_hook.py

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
"""Example for Pre Stop Hook """
2+
3+
from kubernetes import client, config
4+
5+
# Fetching and loading Kubernetes Information
6+
config.load_kube_config()
7+
# For incluster details
8+
# config.incluster_kube_config()
9+
10+
extension = client.ExtensionsV1beta1Api()
11+
12+
# Container
13+
container = client.V1Container(
14+
name="nginx",
15+
image="nginx:1.7.9",
16+
image_pull_policy="IfNotPresent",
17+
ports=[client.V1ContainerPort(container_port=80)],
18+
19+
lifecycle=client.V1Lifecycle(
20+
pre_stop=client.V1Handler(
21+
_exec=client.V1ExecAction(
22+
command=[
23+
# Commands to be executed in the prestop hook
24+
"touch kube-test.txt"
25+
]
26+
27+
)#closing for V1ExecAction
28+
29+
)#closing for V1Handler
30+
31+
)#closing for V1Lifecycle
32+
)
33+
34+
# Template
35+
template = client.V1PodTemplateSpec(
36+
metadata=client.V1ObjectMeta(labels={"app": "nginx"}),
37+
spec=client.V1PodSpec(containers=[container]))
38+
39+
40+
# Spec
41+
spec = client.ExtensionsV1beta1DeploymentSpec(
42+
replicas=1,
43+
template=template)
44+
45+
#Deployment
46+
deployment = client.ExtensionsV1beta1Deployment(
47+
api_version="extensions/v1beta1",
48+
kind="Deployment",
49+
metadata=client.V1ObjectMeta(name="nginx-deployment"),
50+
spec=spec)
51+
52+
# Creation of the Deployment in specified namespace
53+
extension.create_namespaced_deployment(namespace="kube-client", body=deployment)
54+
55+

0 commit comments

Comments
 (0)