我一直跟随Gentle ContainerD on Windows Guide For You在我的Windows 10机器上安装ContainerD,但不知怎么我无法从本教程中开始任何示例。
命令是:crictl.exe runp --runtime runhcs-wcow-process .\pod-config.yaml错误是:
crictl.exe runp --runtime runhcs-wcow-process .\pod-config.yaml
time="2022-03-18T19:39:38+02:00" level=fatal msg="run pod sandbox:
rpc error: code = Unknown desc = failed to setup network for sandbox \"7db0b08199861ffc0a68b869990c2ce1e2cee29df2579f9502ec584fbd5d2913\": plugin type=\"nat\" name=\"natContainerD\" failed (add):
error creating endpoint hcnCreateEndpoint failed in Win32: IP address is either invalid or not part of any configured subnet(s). (0x803b001e) {\"Success\":false,\"Error\":\"IP address is either invalid or not part of any configured subnet(s). \",\"ErrorCode\":2151350302} :
endpoint config &{ 7db0b08199861ffc0a68b869990c2ce1e2cee29df2579f9502ec584fbd5d2913_natContainerD 6160b2e0-4525-4bbc-b725-135c55fc741b [] [{ 0}] { [] [] []} [{172.22.208.1 0.0.0.0/0 0}] 0 {2 0}}"我想我没有配置我的cni网络,对吗?
下面是我在建立网络时所做的步骤:
$subnet='10.0.0.0/16'
$gateway='10.0.0.1'
New-HnsNetwork -Type NAT -AddressPrefix $subnet -Gateway $gateway -Name "natContainerD"请注意,我无法创建名为nat的网络,因为它已经存在(从Docker ?)我把这个命名为natContainerD
然后配置cni本身(如上面的教程所示):
@"
{
"cniVersion": "0.2.0",
"name": "nat",
"type": "nat",
"master": "Internet",
"ipam": {
"subnet": "$subnet",
"routes": [
{
"gateway": "$gateway"
}
]
},
"capabilities": {
"portMappings": true,
"dns": true
}
}
"@ | Set-Content "$env:ProgramFiles\containerd\cni\conf\0-containerd-nat.conf" -Force但是,无论我在这个文件中更改了什么设置,我仍然无法启动任何容器:
有什么建议吗?
发布于 2022-03-23 17:54:01
下面是我试图在Windows 2022上安装容器的步骤。
附件-WindowsFeature特性容器,Hyper-V,Hyper-V-工具,Hyper PowerShell -Restart -Restart
mkdir -force "C:\Program \cni\cni\bin“mkdir -force "C:\Program \cni\cni\conf”
从windows-container-networking-cni-amd64-v0.2.0.zip下载microsoft/windows-container-networking文件
windows-container-networking-cni-amd64-v0.2.0.zip curl.exe -LO https://github.com/microsoft/windows-container-networking/releases/download/v0.2.0/windows-container-networking-cni-amd64-v0.2.0.zip展开-存档-LO -DestinationPath "C:\Program \curl.exe\cni\bin“-Force删除-项windows-container-networking-cni-amd64-v0.2.0.zip
您必须从microsoft/windows-container-networking回购下载源代码,并从源代码中构建自己的nat.exe。这是因为版本中的二进制版本已经过时了。它不会在WS2022中工作。我创建了一个问题here.
创建nat网络
curl.exe -LO https://raw.githubusercontent.com/microsoft/SDN/master/Kubernetes/windows/hns.psm1 Import ./hns.psm1 $subnet="10.0.0.0/16“$gateway="10.0.0.1”New-HNSNetwork -Type -AddressPrefix $subnet -Gateway $gateway -Name " NAT“{ "cniVersion":"0.2.0","name":"nat","type":"nat",”$gateway=“:”以太网“,"ipam":{“子网”:"$subnet",“路由”:{“网关”:"$gateway“},”功能“:{ "portMappings":true,"dns":true } "@ AC.26 Set-Content "C:\Program Files\containerd\cni\conf\0-containerd-nat.conf“-Force
使用ctr运行容器
cmd /c ver
Microsoft版本10.0.20348.587
mcr.microsoft.com/windows/nanoserver:ltsc2022和hello-world图像mcr.microsoft.com/windows/nanoserver:ltsc2022 ctr.exe图像拉出ctr.exe
ctr.exe运行mcr.microsoft.com/windows/nanoserver:ltsc2022helcmd /c echo hello容器rm Hello
registry.hub.docker.com/library/hello-world:nanoserver-ltsc2022 ctr.exe run -rm ctr.exe hello-world
Rmmcr.microsoft.com/windows/nanoserver:ltsc2022 test curl.exe -s -s
使用crictl运行Pod和容器
crictl工具Files\containerd" curl.exe -LO https://github.com/kubernetes-sigs/cri-tools/releases/download/v1.23.0/crictl-v1.23.0-windows-amd64.tar.gz tar xvf crictl v1.23.0-windows-amd64.tar.gz mv crictl.exe "C:\Program
crictl配置mkdir -Force "$home.crictl“@运行时-终结点:npipe://./$home.crictl\crictl.yaml/$home.crictl\crictl.yaml图像-终结点:npipe://.$home.crictl\crictl.yaml/ -Force crictl.exe
k8s.gcr.io/pause:3.6)板球拉k8s.gcr.io/pause:3.6
@{“元数据”:{“名称”:"hello-world-sandbox“、”命名空间“:”默认“、”尝试“:1、"uid":"hdishd83djaidwnduwk28bcsb”}、"log_directory":"/tmp“} "@酶集-内容”po-config.json“-Force mkdir C:\tmp $POD_ID=”
@{“元数据”:{ "name":"hello-world:nanoserver-ltsc2022“},"image":{ "image":"hello-world:nanoserver-ltsc2022”},"log_path":"hello-world.0.log“} "@ Set-Content”容器-config.json“-Force $CONTAINER_ID=。
板球启动$CONTAINER_ID
crictl日志$CONTAINER_ID
码头来的你好!此消息显示您的安装工作正常。为了生成此消息,Docker采取了以下步骤: 1. Docker客户端联系了Docker守护进程。2. Docker守护进程从Docker Hub中提取"hello-world“图像。(windows-a 64,nanoserver-ltsc2022) 3. Docker守护进程从该映像创建了一个新容器,该映像运行生成当前正在读取的输出的可执行文件。4. Docker守护进程将该输出流到Docker客户端,后者将其发送到您的终端。要尝试更有雄心的东西,您可以运行Windows容器: PS C:> docker run -it mcr.microsoft.com/windows/servercore:ltsc2022 powershell共享映像,自动化工作流,更多使用免费Docker:https://hub.docker.com/来获取更多示例和想法,请访问:
蟋蟀荚,蟋蟀ps -a
板球rm $CONTAINER_ID蟋蟀停止$POD_ID蟋蟀rmp $POD_ID
https://stackoverflow.com/questions/71531188
复制相似问题