Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 能给我一个吊舱吗;通过Kubernetes API暂停容器ID?_Python 3.x_Kubernetes_Kubernetes Apiserver - Fatal编程技术网

Python 3.x 能给我一个吊舱吗;通过Kubernetes API暂停容器ID?

Python 3.x 能给我一个吊舱吗;通过Kubernetes API暂停容器ID?,python-3.x,kubernetes,kubernetes-apiserver,Python 3.x,Kubernetes,Kubernetes Apiserver,当我列出集群中的pod(在特定节点和所有名称空间中)时,列出的每个pod还包含容器状态,其中我获得列出的每个容器的容器运行时引擎id 举例来说,我使用这个Python3脚本通过官方的Kubernetes Python客户端访问集群API;这是一个稍微修改过的版本 来自kubernetes导入客户端,配置 导入操作系统 def main(): #只有当K8s将此脚本作为POD运行时,它才起作用 config.load\u incluster\u config() #在外面的豆荚里用这个 #conf

当我列出集群中的pod(在特定节点和所有名称空间中)时,列出的每个pod还包含容器状态,其中我获得列出的每个容器的容器运行时引擎id

举例来说,我使用这个Python3脚本通过官方的Kubernetes Python客户端访问集群API;这是一个稍微修改过的版本

来自kubernetes导入客户端,配置
导入操作系统
def main():
#只有当K8s将此脚本作为POD运行时,它才起作用
config.load\u incluster\u config()
#在外面的豆荚里用这个
#config.load_kube_config()
#从pod环境变量中获取节点名称
node_name=os.environ.get('KUHBERNETES_node_name',无)
v1=client.CoreV1Api()
打印(“列出节点上的POD及其IP:,节点名称”)
#字段选择器是一个字符串,您需要在这里解析pod中的字段
字段\选择器='spec.nodeName='+节点\名称
ret=v1.列出所有名称空间的名称空间(watch=False,field\u selector=field\u selector)
对于ret.items中的i:
打印(“%s\t%s\t%s”%
(i.status.pod_ip,i.metadata.namespace,i.metadata.name))
对于处于i.status.container_状态的c:
打印(“\t%s\t%s”%
(c.名称,c.集装箱编号)
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
main()
注意:Pod使用合适的ServiceAccount,使其能够列出所有名称空间中的Pod

在minikube安装程序上运行时的典型结果输出可能如下所示:

Listing pods with their IPs on node:  minikube
172.17.0.5      cattle-system   cattle-cluster-agent-c949f5b48-llm65
        cluster-register        docker://f12fcb1acbc2e7c01c24dbd831ed53ab2a6df2353abe80988ae132c39f7c68c6
10.0.2.15       cattle-system   cattle-node-agent-hmq86
        agent   docker://e335a3d30ea37887ac2a1a1cc339eabb0a0098471f86db1926cfe02eef2c6b8f
172.17.0.6      gw      pyk8s
        py8ks   docker://1272747b52983e8f745bd118b2d935c1d314e9c6cc310e88013021ba974bc030
172.17.0.4      kube-system     coredns-c4cffd6dc-7lsdn
        coredns docker://8b0c3c67532ee2d7d16958a33cb942d5bd09ed37ded1d570830b5f7e5f7a09ab
10.0.2.15       kube-system     etcd-minikube
        etcd    docker://5e0e0ee48248e9779a2a5f9347a39c58743562b10719a31d7d6fc0af5e79e093
10.0.2.15       kube-system     kube-addon-manager-minikube
        kube-addon-manager      docker://96908bc5d5fd9b87779c8a8544591e5aeda2d58956fb365ab595681605b01001
10.0.2.15       kube-system     kube-apiserver-minikube
        kube-apiserver  docker://0711ec9a2321b1b5a801ab2b19409a1edc731058aa994978f989185efc4c8294
10.0.2.15       kube-system     kube-controller-manager-minikube
        kube-controller-manager docker://16d2e11a8dea2a46cd44bc97a5f894e7ff9da2da70f3c24376b4189dd912336e
172.17.0.2      kube-system     kube-dns-86f4d74b45-wbdf6
        dnsmasq docker://653c7ef27760a820449ee518b59e39ab4a7f65cade996ed85313c98038827f67
        kubedns docker://6cf6aaeac1192cf1d580293e03164db57bc70bce41cf91e5cac081010fe48cf7
        sidecar docker://9816e10d8455988aa400f98df32cfa69ce89fbfc3e3e1554145d9d6418c02157
10.0.2.15       kube-system     kube-proxy-ll7lq
        kube-proxy      docker://6b8c7ce1ae3c8fbc487bf05ccca9105dffaf675f916cdb62a595d8be7902e69b
10.0.2.15       kube-system     kube-scheduler-minikube
        kube-scheduler  docker://ab79e46ba900753d86b7000061720551a199c0ea6eee923fcd86bda2d86cc54a
172.17.0.3      kube-system     kubernetes-dashboard-6f4cfc5d87-bmnl8
        kubernetes-dashboard    docker://a73ef6b30fb87826a4a71ba428a01511278a759d69fade82ddd654911ec3f14f
10.0.2.15       kube-system     storage-provisioner
        storage-provisioner     docker://51eaf90bc3ae11baa354a436e366730c19206c73743c6517a0ad9eb8f0b89896
请注意,这列出了pod容器的容器ID,但暂停容器ID除外。是否有API方法也可以获取/列出pods中暂停容器的容器ID


我试着搜索“kubernetes api pod暂停容器id”之类的东西。。。但是我没有得到任何有用的答案,除了ContainerStatus的常见API结果等。

在对Kubernetes的Docker shim的工作原理进行了一些研究之后,很明显,暂停容器在Kubernetes集群API中是不可见的。这是因为暂停容器是某些容器引擎(如Docker)所需的人工制品,而不是其他容器引擎(如果我没有弄错的话,请使用CRI-O)


但是,如果需要低级Docker容器视图,并且需要与Kubernetes节点调度pod视图相关,则可以使用Kubernetes Docker shim中使用的可预测Docker容器命名方案。垫片以
k8s\u conainer\u pod\u namespace\u uid\u trunt
的形式创建容器名称,并带有可选的
\u random
后缀,以防od命中Docker。您是否尝试将
include\u uninitialized=true
添加到v1.list\u pod\u for\u all\u namespace?它说
如果为真,部分初始化的资源将包含在响应中。
在@Crou内部进行了测试,但这不包括任何暂停容器。