本文整理匯總了Python中kubernetes.client.V1Container方法的典型用法代碼示例。如果您正苦於以下問題:Python client.V1Container方法的具體用法?Python client.V1Container怎麽用?Python client.V1Container使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類kubernetes.client
的用法示例。
在下文中一共展示了client.V1Container方法的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。
示例1: create_job_manifest
# 需要導入模塊: from kubernetes import client [as 別名]
# 或者: from kubernetes.client import V1Container [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 V1Container [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: _create_k8s_job
# 需要導入模塊: from kubernetes import client [as 別名]
# 或者: from kubernetes.client import V1Container [as 別名]
def _create_k8s_job(self, yaml_spec):
""" _create_k8s_job creates a kubernetes job based on the yaml spec """
pod = k8s_client.V1Pod(metadata=k8s_client.V1ObjectMeta(generate_name=yaml_spec['metadata']['generateName'],
annotations=yaml_spec['metadata']['annotations']))
container = k8s_client.V1Container(name = yaml_spec['spec']['containers'][0]['name'],
image = yaml_spec['spec']['containers'][0]['image'],
args = yaml_spec['spec']['containers'][0]['args'])
pod.spec = k8s_client.V1PodSpec(restart_policy=yaml_spec['spec']['restartPolicy'],
containers = [container],
service_account_name=yaml_spec['spec']['serviceAccountName'])
try:
api_response = self._corev1.create_namespaced_pod(yaml_spec['metadata']['namespace'], pod)
return api_response.metadata.name, True
except k8s_client.rest.ApiException as e:
logging.exception("Exception when calling CoreV1Api->create_namespaced_pod: {}\n".format(str(e)))
return '', False
示例4: init_containers
# 需要導入模塊: from kubernetes import client [as 別名]
# 或者: from kubernetes.client import V1Container [as 別名]
def init_containers(self, container_props, limit_resource, name):
list_env_var = self.init_envs(container_props, name)
container_name = self.pre_process_name(container_props.name)
list_container_port = list()
if container_props.ports:
for container_port in container_props.ports:
port = int(container_port)
cport = client.V1ContainerPort(container_port=port)
list_container_port.append(cport)
container = client.V1Container(
name=container_name,
image=container_props.image,
ports=list_container_port,
resources=limit_resource,
command=container_props.command,
args=container_props.args,
env=list_env_var,
image_pull_policy="IfNotPresent")
return container
# init_deployment initializes Kubernetes Pod object
示例5: create_deployment
# 需要導入模塊: from kubernetes import client [as 別名]
# 或者: from kubernetes.client import V1Container [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
)
示例6: create_deployment_object
# 需要導入模塊: from kubernetes import client [as 別名]
# 或者: from kubernetes.client import V1Container [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
示例7: get_kubernetes_containers
# 需要導入模塊: from kubernetes import client [as 別名]
# 或者: from kubernetes.client import V1Container [as 別名]
def get_kubernetes_containers(
self,
docker_volumes: Sequence[DockerVolume],
system_paasta_config: SystemPaastaConfig,
aws_ebs_volumes: Sequence[AwsEbsVolume],
service_namespace_config: ServiceNamespaceConfig,
) -> Sequence[V1Container]:
service_container = V1Container(
image=self.get_docker_url(),
command=self.get_cmd(),
args=self.get_args(),
env=self.get_container_env(),
resources=self.get_resource_requirements(),
lifecycle=V1Lifecycle(
pre_stop=V1Handler(
_exec=V1ExecAction(command=["/bin/sh", "-c", "sleep 30"])
)
),
name=self.get_sanitised_instance_name(),
liveness_probe=self.get_liveness_probe(service_namespace_config),
ports=[V1ContainerPort(container_port=self.get_container_port())],
security_context=self.get_security_context(),
volume_mounts=self.get_volume_mounts(
docker_volumes=docker_volumes,
aws_ebs_volumes=aws_ebs_volumes,
persistent_volumes=self.get_persistent_volumes(),
),
)
containers = [service_container] + self.get_sidecar_containers( # type: ignore
system_paasta_config=system_paasta_config,
service_namespace_config=service_namespace_config,
)
return containers
示例8: create_job_object
# 需要導入模塊: from kubernetes import client [as 別名]
# 或者: from kubernetes.client import V1Container [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
示例9: test_clusterinit_update_pod_with_init_container
# 需要導入模塊: from kubernetes import client [as 別名]
# 或者: from kubernetes.client import V1Container [as 別名]
def test_clusterinit_update_pod_with_init_container():
pod_passed = k8sclient.V1Pod(
metadata=k8sclient.V1ObjectMeta(annotations={}),
spec=k8sclient.V1PodSpec(containers=[
k8sclient.V1Container(name="cmk")
]),
status=k8sclient.V1PodStatus()).to_dict()
cmd = "cmd"
cmk_img = "cmk_img"
cmk_img_pol = "policy"
args = "argument"
clusterinit.update_pod_with_init_container(pod_passed, cmd, cmk_img,
cmk_img_pol,
args)
pods = json.loads(pod_passed["metadata"]["annotations"][
"pod.beta.kubernetes.io/init-containers"])
assert len(pods) == 1
assert pods[0]["name"] == cmd
assert pods[0]["image"] == cmk_img
assert pods[0]["imagePullPolicy"] == cmk_img_pol
assert args in pods[0]["args"]
second_cmd = "cmd2"
second_img = cmk_img
second_img_pol = "Always"
second_args = ["arg1", "arg2"]
clusterinit.update_pod_with_init_container(pod_passed, second_cmd,
second_img,
second_img_pol,
second_args)
pods = json.loads(pod_passed["metadata"]["annotations"][
"pod.beta.kubernetes.io/init-containers"])
assert len(pods) == 2
示例10: customEndpointSpec
# 需要導入模塊: from kubernetes import client [as 別名]
# 或者: from kubernetes.client import V1Container [as 別名]
def customEndpointSpec(custom_model_spec, service_account):
env = (
[
client.V1EnvVar(name=i["name"], value=i["value"])
for i in custom_model_spec["env"]
]
if custom_model_spec.get("env", "")
else None
)
ports = (
[client.V1ContainerPort(container_port=int(custom_model_spec.get("port", "")))]
if custom_model_spec.get("port", "")
else None
)
containerSpec = client.V1Container(
name=custom_model_spec.get("name", "custom-container"),
image=custom_model_spec["image"],
env=env,
ports=ports,
command=custom_model_spec.get("command", None),
args=custom_model_spec.get("args", None),
image_pull_policy=custom_model_spec.get("image_pull_policy", None),
working_dir=custom_model_spec.get("working_dir", None),
)
return V1alpha2EndpointSpec(
predictor=V1alpha2PredictorSpec(
custom=V1alpha2CustomSpec(container=containerSpec),
service_account_name=service_account,
)
)
示例11: _get_container_or_error
# 需要導入模塊: from kubernetes import client [as 別名]
# 或者: from kubernetes.client import V1Container [as 別名]
def _get_container_or_error(
pod: k8s_client.V1Pod, container_name: Text) -> k8s_client.V1Container:
for container in pod.spec.containers:
if container.name == container_name:
return container
raise ValueError(
'Unable to find {} container from the pod (found {}).'.format(
container_name, [c.name for c in pod.spec.containers]))
示例12: deploy
# 需要導入模塊: from kubernetes import client [as 別名]
# 或者: from kubernetes.client import V1Container [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)
示例13: simple_deployment
# 需要導入模塊: from kubernetes import client [as 別名]
# 或者: from kubernetes.client import V1Container [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
)
]
)
]
)
)
)
)
示例14: simple_statefulset
# 需要導入模塊: from kubernetes import client [as 別名]
# 或者: from kubernetes.client import V1Container [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
)
]
)
]
)
)
)
)
示例15: simple_daemonset
# 需要導入模塊: from kubernetes import client [as 別名]
# 或者: from kubernetes.client import V1Container [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
)
]
)
]
)
)
)
)