本文整理汇总了Python中kubernetes.client.V1PodTemplateSpec方法的典型用法代码示例。如果您正苦于以下问题:Python client.V1PodTemplateSpec方法的具体用法?Python client.V1PodTemplateSpec怎么用?Python client.V1PodTemplateSpec使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类kubernetes.client
的用法示例。
在下文中一共展示了client.V1PodTemplateSpec方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: create_job_manifest
# 需要导入模块: from kubernetes import client [as 别名]
# 或者: from kubernetes.client import V1PodTemplateSpec [as 别名]
def create_job_manifest(envs, commands, name, image, template_file):
if template_file is not None:
with open( template_file ) as f:
job=yaml.safe_load(f)
job["metadata"]["name"]=name
job["spec"]["template"]["metadata"]["labels"]["app"]=name
job["spec"]["template"]["spec"]["containers"][0]["image"]=image
job["spec"]["template"]["spec"]["containers"][0]["command"]=commands
job["spec"]["template"]["spec"]["containers"][0]["name"]=name
job["spec"]["template"]["spec"]["containers"][0]["env"]=envs
job["spec"]["template"]["spec"]["containers"][0]["command"]=commands
else:
container=client.V1Container(image=image, command=commands, name=name, env=envs)
pod_temp=client.V1PodTemplateSpec(
spec=client.V1PodSpec(restart_policy="OnFailure", containers=[container]),
metadata=client.V1ObjectMeta(name=name, labels={"app":name})
)
job=client.V1Job(
api_version="batch/v1",
kind="Job",
spec=client.V1JobSpec(template=pod_temp),
metadata=client.V1ObjectMeta(name=name)
)
return job
示例2: create_job_object
# 需要导入模块: from kubernetes import client [as 别名]
# 或者: from kubernetes.client import V1PodTemplateSpec [as 别名]
def create_job_object():
# Configureate Pod template container
container = client.V1Container(
name="pi",
image="perl",
command=["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"])
# Create and configurate a spec section
template = client.V1PodTemplateSpec(
metadata=client.V1ObjectMeta(labels={"app": "pi"}),
spec=client.V1PodSpec(restart_policy="Never", containers=[container]))
# Create the specification of deployment
spec = client.V1JobSpec(
template=template,
backoff_limit=4)
# Instantiate the job object
job = client.V1Job(
api_version="batch/v1",
kind="Job",
metadata=client.V1ObjectMeta(name=JOB_NAME),
spec=spec)
return job
示例3: test_sanitize_for_config_hash
# 需要导入模块: from kubernetes import client [as 别名]
# 或者: from kubernetes.client import V1PodTemplateSpec [as 别名]
def test_sanitize_for_config_hash(self):
with mock.patch(
"paasta_tools.kubernetes_tools.get_kubernetes_secret_hashes", autospec=True
) as mock_get_kubernetes_secret_hashes:
mock_config = V1Deployment(
metadata=V1ObjectMeta(name="qwe", labels={"mc": "grindah"}),
spec=V1DeploymentSpec(
replicas=2,
selector=V1LabelSelector(match_labels={"freq": "108.9"}),
template=V1PodTemplateSpec(),
),
)
ret = self.deployment.sanitize_for_config_hash(mock_config)
assert "replicas" not in ret["spec"].keys()
assert (
ret["paasta_secrets"] == mock_get_kubernetes_secret_hashes.return_value
)
示例4: create_deployment
# 需要导入模块: from kubernetes import client [as 别名]
# 或者: from kubernetes.client import V1PodTemplateSpec [as 别名]
def create_deployment(apps_v1_api):
container = client.V1Container(
name="deployment",
image="gcr.io/google-appengine/fluentd-logger",
image_pull_policy="Never",
ports=[client.V1ContainerPort(container_port=5678)],
)
# Template
template = client.V1PodTemplateSpec(
metadata=client.V1ObjectMeta(labels={"app": "deployment"}),
spec=client.V1PodSpec(containers=[container]))
# Spec
spec = client.V1DeploymentSpec(
replicas=1,
template=template)
# Deployment
deployment = client.V1Deployment(
api_version="apps/v1",
kind="Deployment",
metadata=client.V1ObjectMeta(name="deployment"),
spec=spec)
# Creation of the Deployment in specified namespace
# (Can replace "default" with a namespace you may have created)
apps_v1_api.create_namespaced_deployment(
namespace="default", body=deployment
)
示例5: create_deployment_object
# 需要导入模块: from kubernetes import client [as 别名]
# 或者: from kubernetes.client import V1PodTemplateSpec [as 别名]
def create_deployment_object():
# Configureate Pod template container
container = client.V1Container(
name="nginx",
image="nginx:1.15.4",
ports=[client.V1ContainerPort(container_port=80)],
resources=client.V1ResourceRequirements(
requests={"cpu": "100m", "memory": "200Mi"},
limits={"cpu": "500m", "memory": "500Mi"}
)
)
# Create and configurate a spec section
template = client.V1PodTemplateSpec(
metadata=client.V1ObjectMeta(labels={"app": "nginx"}),
spec=client.V1PodSpec(containers=[container]))
# Create the specification of deployment
spec = client.V1DeploymentSpec(
replicas=3,
template=template,
selector={'matchLabels': {'app': 'nginx'}})
# Instantiate the deployment object
deployment = client.V1Deployment(
api_version="apps/v1",
kind="Deployment",
metadata=client.V1ObjectMeta(name=DEPLOYMENT_NAME),
spec=spec)
return deployment
示例6: create_job_object
# 需要导入模块: from kubernetes import client [as 别名]
# 或者: from kubernetes.client import V1PodTemplateSpec [as 别名]
def create_job_object(runner_image, region, s3_path, pvc_name):
target_folder = get_target_folder(s3_path)
# Configureate Pod template container
container = k8s_client.V1Container(
name="copy-dataset-worker",
image=runner_image,
command=["aws"],
args=["s3", "sync", s3_path, "/mnt/" + target_folder],
volume_mounts=[k8s_client.V1VolumeMount(name="data-storage", mount_path='/mnt')],
env=[k8s_client.V1EnvVar(name="AWS_REGION", value=region),
k8s_client.V1EnvVar(name="AWS_ACCESS_KEY_ID", value_from=k8s_client.V1EnvVarSource(secret_key_ref=k8s_client.V1SecretKeySelector(key="AWS_ACCESS_KEY_ID", name="aws-secret"))),
k8s_client.V1EnvVar(name="AWS_SECRET_ACCESS_KEY", value_from=k8s_client.V1EnvVarSource(secret_key_ref=k8s_client.V1SecretKeySelector(key="AWS_SECRET_ACCESS_KEY", name="aws-secret")))
],
)
volume = k8s_client.V1Volume(
name='data-storage',
persistent_volume_claim=k8s_client.V1PersistentVolumeClaimVolumeSource(claim_name=pvc_name)
)
# Create and configurate a spec section
template = k8s_client.V1PodTemplateSpec(
# metadata=k8s_client.V1ObjectMeta(labels={"app":"copy-dataset-worker"}),
spec=k8s_client.V1PodSpec(containers=[container], volumes=[volume], restart_policy="OnFailure"))
# Create the specification of deployment
spec = k8s_client.V1JobSpec(
# selector=k8s_client.V1LabelSelector(match_labels={"app":"copy-dataset-worker"}),
template=template)
# Instantiate the deployment object
deployment = k8s_client.V1Job(
api_version="batch/v1",
kind="Job",
metadata=k8s_client.V1ObjectMeta(name=container.name),
spec=spec)
return deployment
示例7: deploy
# 需要导入模块: from kubernetes import client [as 别名]
# 或者: from kubernetes.client import V1PodTemplateSpec [as 别名]
def deploy(self, image, name, ns, port, replicas=1, svc_type="NodePort", traffic_policy="Local", cluster_ip=None, ipv6=False):
"""
Creates a deployment and corresponding service with the given
parameters.
"""
# Run a deployment with <replicas> copies of <image>, with the
# pods labelled with "app": <name>.
deployment = client.V1Deployment(
api_version="apps/v1",
kind="Deployment",
metadata=client.V1ObjectMeta(name=name),
spec=client.V1DeploymentSpec(
replicas=replicas,
selector={'matchLabels': {'app': name}},
template=client.V1PodTemplateSpec(
metadata=client.V1ObjectMeta(labels={"app": name}),
spec=client.V1PodSpec(containers=[
client.V1Container(name=name,
image=image,
ports=[client.V1ContainerPort(container_port=port)]),
]))))
api_response = client.AppsV1Api().create_namespaced_deployment(
body=deployment,
namespace=ns)
logger.debug("Deployment created. status='%s'" % str(api_response.status))
# Create a service called <name> whose endpoints are the pods
# with "app": <name>; i.e. those just created above.
self.create_service(name, name, ns, port, svc_type, traffic_policy, ipv6=ipv6)
示例8: simple_deployment
# 需要导入模块: from kubernetes import client [as 别名]
# 或者: from kubernetes.client import V1PodTemplateSpec [as 别名]
def simple_deployment():
"""Return the Kubernetes config matching the simple-deployment.yaml manifest."""
return client.V1Deployment(
api_version='apps/v1',
kind='Deployment',
metadata=client.V1ObjectMeta(
name='nginx-deployment',
labels={
'app': 'nginx'
}
),
spec=client.V1DeploymentSpec(
replicas=3,
selector=client.V1LabelSelector(
match_labels={
'app': 'nginx'
}
),
template=client.V1PodTemplateSpec(
metadata=client.V1ObjectMeta(
labels={
'app': 'nginx'
}
),
spec=client.V1PodSpec(
containers=[
client.V1Container(
name='nginx',
image='nginx:1.7.9',
ports=[
client.V1ContainerPort(
container_port=80
)
]
)
]
)
)
)
)
示例9: simple_statefulset
# 需要导入模块: from kubernetes import client [as 别名]
# 或者: from kubernetes.client import V1PodTemplateSpec [as 别名]
def simple_statefulset():
"""Return the Kubernetes config matching the simple-statefulset.yaml manifest."""
return client.V1StatefulSet(
api_version='apps/v1',
kind='StatefulSet',
metadata=client.V1ObjectMeta(
name='postgres-statefulset',
labels={
'app': 'postgres'
}
),
spec=client.V1StatefulSetSpec(
replicas=3,
selector=client.V1LabelSelector(
match_labels={
'app': 'postgres'
}
),
service_name='simple-service',
template=client.V1PodTemplateSpec(
metadata=client.V1ObjectMeta(
labels={
'app': 'postgres'
}
),
spec=client.V1PodSpec(
containers=[
client.V1Container(
name='postgres',
image='postgres:9.6',
ports=[
client.V1ContainerPort(
container_port=5432
)
]
)
]
)
)
)
)
示例10: simple_daemonset
# 需要导入模块: from kubernetes import client [as 别名]
# 或者: from kubernetes.client import V1PodTemplateSpec [as 别名]
def simple_daemonset():
"""Return the Kubernetes config matching the simple-daemonset.yaml manifest."""
return client.V1DaemonSet(
api_version='apps/v1',
kind='DaemonSet',
metadata=client.V1ObjectMeta(
name='canal-daemonset',
labels={
'app': 'canal'
}
),
spec=client.V1DaemonSetSpec(
selector=client.V1LabelSelector(
match_labels={
'app': 'canal'
}
),
template=client.V1PodTemplateSpec(
metadata=client.V1ObjectMeta(
labels={
'app': 'canal'
}
),
spec=client.V1PodSpec(
containers=[
client.V1Container(
name='canal',
image='canal:3.7.2',
ports=[
client.V1ContainerPort(
container_port=9099
)
]
)
]
)
)
)
)
示例11: simple_replicaset
# 需要导入模块: from kubernetes import client [as 别名]
# 或者: from kubernetes.client import V1PodTemplateSpec [as 别名]
def simple_replicaset():
"""Return the Kubernetes config matching the simple-replicaset.yaml manifest."""
return client.V1ReplicaSet(
api_version='apps/v1',
kind='ReplicaSet',
metadata=client.V1ObjectMeta(
name='frontend',
labels={
'app': 'guestbook',
'tier': 'frontend',
},
),
spec=client.V1ReplicaSetSpec(
replicas=3,
selector=client.V1LabelSelector(
match_labels={
'tier': 'frontend',
},
),
template=client.V1PodTemplateSpec(
metadata=client.V1ObjectMeta(
labels={
'tier': 'frontend',
},
),
spec=client.V1PodSpec(
containers=[
client.V1Container(
name='php-redis',
image='gcr.io/google_samples/gb-frontend:v3',
),
],
),
),
),
)
示例12: test_get_pod_template_spec
# 需要导入模块: from kubernetes import client [as 别名]
# 或者: from kubernetes.client import V1PodTemplateSpec [as 别名]
def test_get_pod_template_spec(
self,
mock_load_service_namespace_config,
mock_get_node_affinity,
mock_get_pod_volumes,
mock_get_kubernetes_containers,
mock_get_instance,
mock_get_service,
mock_get_volumes,
in_smtstk,
routable_ip,
node_affinity,
spec_affinity,
):
mock_service_namespace_config = mock.Mock()
mock_load_service_namespace_config.return_value = mock_service_namespace_config
mock_service_namespace_config.is_in_smartstack.return_value = in_smtstk
mock_get_node_affinity.return_value = node_affinity
mock_system_paasta_config = mock.Mock()
mock_system_paasta_config.get_pod_defaults.return_value = dict(dns_policy="foo")
ret = self.deployment.get_pod_template_spec(
git_sha="aaaa123", system_paasta_config=mock_system_paasta_config
)
assert mock_load_service_namespace_config.called
assert mock_service_namespace_config.is_in_smartstack.called
assert mock_get_pod_volumes.called
assert mock_get_volumes.called
pod_spec_kwargs = dict(
service_account_name=None,
containers=mock_get_kubernetes_containers.return_value,
share_process_namespace=True,
node_selector={"yelp.com/pool": "default"},
restart_policy="Always",
volumes=[],
dns_policy="foo",
)
pod_spec_kwargs.update(spec_affinity)
assert ret == V1PodTemplateSpec(
metadata=V1ObjectMeta(
labels={
"yelp.com/paasta_git_sha": "aaaa123",
"yelp.com/paasta_instance": mock_get_instance.return_value,
"yelp.com/paasta_service": mock_get_service.return_value,
"paasta.yelp.com/git_sha": "aaaa123",
"paasta.yelp.com/instance": mock_get_instance.return_value,
"paasta.yelp.com/service": mock_get_service.return_value,
},
annotations={
"smartstack_registrations": '["kurupt.fm"]',
"paasta.yelp.com/routable_ip": routable_ip,
"hpa": '{"http": {"any": "random"}, "uwsgi": {}}',
"iam.amazonaws.com/role": "",
},
),
spec=V1PodSpec(**pod_spec_kwargs),
)
示例13: init_deployment
# 需要导入模块: from kubernetes import client [as 别名]
# 或者: from kubernetes.client import V1PodTemplateSpec [as 别名]
def init_deployment(self, tosca_kube_obj, kube_obj_name):
"""Instantiate the deployment object"""
deployment_name = kube_obj_name
# Create a list of container, which made a Pod
containers = list()
for container_prop in tosca_kube_obj.containers:
limit_resource = self.init_resource_requirements(container_prop)
container = self.init_containers(
container_props=container_prop,
limit_resource=limit_resource,
name=deployment_name)
containers.append(container)
# Make a label with pattern {"selector": "deployment_name"}
if tosca_kube_obj.scaling_object:
scaling_name = tosca_kube_obj.scaling_object.scaling_name
update_label = self.config_labels(deployment_name=deployment_name,
scaling_name=scaling_name)
else:
update_label = self.config_labels(deployment_name=deployment_name)
if tosca_kube_obj.labels:
if 'selector' in update_label:
del update_label['selector']
update_label.update(tosca_kube_obj.labels)
labels = update_label
# Create and configure a spec section
pod_template = client.V1PodTemplateSpec(
metadata=client.V1ObjectMeta(
labels=labels, annotations=tosca_kube_obj.annotations),
spec=client.V1PodSpec(containers=containers))
# Create the specification of deployment
label_selector = client.V1LabelSelector(match_labels=labels)
deployment_spec = client.V1DeploymentSpec(
template=pod_template, selector=label_selector)
metadata = client.V1ObjectMeta(name=deployment_name, labels=labels)
# Instantiate the deployment object
deployment = client.V1Deployment(
api_version="apps/v1",
kind="Deployment",
metadata=metadata,
spec=deployment_spec)
return deployment
# init_hpa initializes Kubernetes Horizon Pod Auto-scaling object
示例14: _add_kubetest_labels
# 需要导入模块: from kubernetes import client [as 别名]
# 或者: from kubernetes.client import V1PodTemplateSpec [as 别名]
def _add_kubetest_labels(self) -> None:
"""Add a kubetest label to the StatefulSet object.
This allows kubetest to more easily and reliably search for and aggregate
API objects, such as getting the Pods for a StatefulSet.
The kubetest label key is "kubetest/<obj kind>" where the obj kind is
the lower-cased kind of the obj.
"""
self.klabel_key = 'kubetest/statefulset'
if self.obj.metadata.labels:
self.klabel_uid = self.obj.metadata.labels.get(self.klabel_key, None)
else:
self.klabel_uid = None
if not self.klabel_uid:
self.klabel_uid = str(uuid.uuid4())
# fixme: it would be nice to clean up this label setting logic a bit
# and possibly abstract it out to something more generalized, but
# that is difficult to do given the differences in object attributes
# Set the base metadata label
if self.obj.metadata is None:
self.obj.metadata = client.V1ObjectMeta()
if self.obj.metadata.labels is None:
self.obj.metadata.labels = {}
if self.klabel_key not in self.obj.metadata.labels:
self.obj.metadata.labels[self.klabel_key] = self.klabel_uid
# If no spec is set, there is nothing to set additional labels on
if self.obj.spec is None:
log.warning('statefulset spec not set - cannot set kubetest label')
return
# Set the selector label
if self.obj.spec.selector is None:
self.obj.spec.selector = client.V1LabelSelector()
if self.obj.spec.selector.match_labels is None:
self.obj.spec.selector.match_labels = {}
if self.klabel_key not in self.obj.spec.selector.match_labels:
self.obj.spec.selector.match_labels[self.klabel_key] = self.klabel_uid
# Set the template label
if self.obj.spec.template is None:
self.obj.spec.template = client.V1PodTemplateSpec()
if self.obj.spec.template.metadata is None:
self.obj.spec.template.metadata = client.V1ObjectMeta(labels={})
if self.klabel_key not in self.obj.spec.template.metadata.labels:
self.obj.spec.template.metadata.labels[self.klabel_key] = self.klabel_uid
示例15: _add_kubetest_labels
# 需要导入模块: from kubernetes import client [as 别名]
# 或者: from kubernetes.client import V1PodTemplateSpec [as 别名]
def _add_kubetest_labels(self) -> None:
"""Add a kubetest label to the Deployment object.
This allows kubetest to more easily and reliably search for and aggregate
API objects, such as getting the Pods for a Deployment.
The kubetest label key is "kubetest/<obj kind>" where the obj kind is
the lower-cased kind of the obj.
"""
self.klabel_key = 'kubetest/deployment'
if self.obj.metadata.labels:
self.klabel_uid = self.obj.metadata.labels.get(self.klabel_key, None)
else:
self.klabel_uid = None
if not self.klabel_uid:
self.klabel_uid = str(uuid.uuid4())
# fixme: it would be nice to clean up this label setting logic a bit
# and possibly abstract it out to something more generalized, but
# that is difficult to do given the differences in object attributes
# Set the base metadata label
if self.obj.metadata is None:
self.obj.metadata = client.V1ObjectMeta()
if self.obj.metadata.labels is None:
self.obj.metadata.labels = {}
if self.klabel_key not in self.obj.metadata.labels:
self.obj.metadata.labels[self.klabel_key] = self.klabel_uid
# If no spec is set, there is nothing to set additional labels on
if self.obj.spec is None:
log.warning('deployment spec not set - cannot set kubetest label')
return
# Set the selector label
if self.obj.spec.selector is None:
self.obj.spec.selector = client.V1LabelSelector()
if self.obj.spec.selector.match_labels is None:
self.obj.spec.selector.match_labels = {}
if self.klabel_key not in self.obj.spec.selector.match_labels:
self.obj.spec.selector.match_labels[self.klabel_key] = self.klabel_uid
# Set the template label
if self.obj.spec.template is None:
self.obj.spec.template = client.V1PodTemplateSpec()
if self.obj.spec.template.metadata is None:
self.obj.spec.template.metadata = client.V1ObjectMeta(labels={})
if self.klabel_key not in self.obj.spec.template.metadata.labels:
self.obj.spec.template.metadata.labels[self.klabel_key] = self.klabel_uid