与docker接口匹配的kubernetes的python包装器
kompatible的Python项目详细描述
kompatible
此包公开 Kubernetes Python Client 具有与 Docker SDK for Python
示例
首先,签出此项目并安装依赖项:
pip install -r requirements-dev.txt
。
然后,确保已安装并启动
Docker
和/或Minikube
把那些工具放好
import docker as sdk
或import kompatible as sdk
下面的例子将起作用,尽管在第一个例子中
是码头集装箱启动,
在后者是库伯内特斯的豆荚
“你好,世界!”:运行、列出、删除
>>>client=sdk.from_env()>>>[client.containers.run(..."alpine","echo hello world",...name='foobar',...labels={'foo':'bar'})][...'hello world\n']>>>defnot_kube(containers):# Only needed for Docker, on Travis, with k8s started....return[cforcincontainersif'kube'notinc.name]>>>containers=not_kube(client.containers.list(all=True,filters={}))>>>[c.nameforcincontainers][...'foobar']>>>c=containers[0]>>>c.remove(force=True,v=True)>>>containers=not_kube(client.containers.list(all=True,filters={}))>>>assertlen(containers)==0
容器属性
>>>assertc.id>>>assertc.image>>>c.labels{...'foo':...'bar'}>>>assertc.short_id>>>assertc.status
containers.run
夸格斯
Subclients
>>>assertclient.api>>>assertclient.containers>>>assertclient.images>>>assertclient.volumes
待办事项
client.api.base_url
client.containers.run(image_name,
name=container_spec.container_name,
ports={'{}/tcp'.format(container_spec.container_port): None},
detach=True,
labels=labels,
volumes=volumes,
nano_cpus=int(container_spec.cpus * 1e9),
environment=environment,
mem_reservation='{}M'.format(new_mem_reservation_mb))
client.containers.get(name_or_id)
container.logs(timestamps=True)
container.attrs['NetworkSettings']
container.attrs['Config']['Labels']
container.remove(force=True, v=True)
client.containers.list(all=True, filters=filters)
client.images
client.images.pull # Used by script, but not used by runtime.
# For Kubernetes, consider https://kubernetes.io/docs/concepts/containers/images/#pre-pulling-images
# We would need to make sure that every image is on every node we start up.
# Mayber other Container registries are faster than DockerHub, in which
# case pre-caching might be less important?
client.volumes
client.volumes.create(driver='local').name