Author | 程泽睿志 |
---|---|
Date | 2021-12-30 |
chengzeruizhi@huawei.com |
重构前启动pod的流程是创建容器在先,网络命名空间由容器运行时来创建。当容器运行起来了之后再用CNI插件去配置这个网络命名空间。这个流程和containerd的实现是不一样的,而且无法兼容安全容器。安全容器涉及到虚拟机和宿主机之间的通信,因而要求在容器运行之前就要有一个能够使用的网络命名空间。现有的流程无法满足这个需求,这使得重构pod的启动流程成为了必须。
重构后的pod启动流程应该有如下行为:
修改后要求能够兼容安全容器(kata),并保障已有的功能。
在重构时有三个主要问题,一是如何避免与客户端启动容器流程的冲突;二是以怎样的方式保存命名空间的路径;三是引入了新的数据和文件之后怎么处理资源的回收。
解决思路如下:
重构前时序图
重构后时序图
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"Bridge": {
"type": "string"
},
"SandboxID": {
"type": "string"
},
"LinkLocalIPv6Address": {
"type": "string"
},
"LinkLocalIPv6PrefixLen": {
"type": "integer"
},
"Ports": {
"$ref": "../defs.json#/definitions/mapStringObjectPortBindings"
},
"CNIPorts": {
"$ref": "../cni/anno_port_mappings.json"
},
"SandboxKey": {
"type": "string"
},
"EndpointID": {
"type": "string"
},
"Gateway": {
"type": "string"
},
"GlobalIPv6Address": {
"type": "string"
},
"GlobalIPv6PrefixLen": {
"type": "integer"
},
"IPAddress": {
"type": "string"
},
"IPPrefixLen": {
"type": "integer"
},
"IPv6Gateway": {
"type": "string"
},
"MacAddress": {
"type": "string"
},
"Activation": {
"type": "boolean"
},
"Networks": {
"$ref": "../defs.json#/definitions/mapStringObjectNetworks"
}
}
}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )