首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建容器时Kubernetes ` `RuntimeHandler "runc“不支持`

创建容器时Kubernetes ` `RuntimeHandler "runc“不支持`
EN

Stack Overflow用户
提问于 2020-08-13 16:53:24
回答 1查看 211关注 0票数 0

我试图指定使用Kubernetes部署的容器的runtime。我按照this link中的指南创建了下面的RuntimeClass

代码语言:javascript
复制
apiVersion: node.k8s.io/v1beta1
kind: RuntimeClass
metadata:
    name: runc
handler: runc

# $ kubeclt get RuntimeClass
# NAME   HANDLER   AGE
# runc   runc      59m

然后,我设置了我的Pod spec.runtimeClassName="runc"。但是,在使用Kubernetes部署时,我得到了以下错误:

代码语言:javascript
复制
Warning  FailedCreatePodSandBox  2m43s (x141 over 32m)  kubelet, jetson1   Failed to create pod sandbox: rpc error: code = Unknown desc = RuntimeHandler "runc" not supported

我可以使用docker--runtime=runc运行容器,而不会出现任何错误。但是当使用K8s部署它时,就会出现错误。以下是我的docker info

代码语言:javascript
复制
Client:
 Debug Mode: false

Server:
 Containers: 11
  Running: 5
  Paused: 0
  Stopped: 6
 Images: 12
 Server Version: 19.03.6
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Native Overlay Diff: true
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: nvidia runc
 Default Runtime: nvidia
 Init Binary: docker-init
 containerd version: 
 runc version: 
 init version: 
 Security Options:
  seccomp
   Profile: default
 Kernel Version: 4.9.140-tegra
 Operating System: Ubuntu 18.04.4 LTS
 OSType: linux
 Architecture: aarch64
 CPUs: 4
 Total Memory: 3.871GiB
 Name: jetson1
 ID: HLZ4:DQKM:J7YY:OMDN:JXXZ:PFL5:YJGT:DJBM:SMSL:UTZA:WCZ4:GUD4
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false

任何建议都将不胜感激。谢谢!

EN

回答 1

Stack Overflow用户

发布于 2020-08-13 23:35:14

虽然runc能够创建容器,但它是一个相当低级的组件。我们所知的大多数容器运行时工具实际上在某种程度上依赖于它。This answer to another question gives a great overview of it

Kubernetes中针对特定容器运行时的RuntimeClass功能要求它在本地节点上实现容器运行时接口(共享链接的“设置”部分简要介绍了这一点)。我做了一些快速的研究,没有任何迹象表明runc正在直接实现CRI。如果是,Kubernetes将跳过您访问Docker的过程;它将使用该接口直接从kubelet与另一个组件通信。因此,检查Docker设置无助于查看runc是否是可行的Kubernetes容器运行时。

所以,你应该回顾一下你为什么要这样做- runc可能已经在你的默认容器rumtime堆栈中使用了,而你可能并没有意识到它。Kubernetes有文档for alternative container runtimes,如果你正在寻找比Docker更轻量级的东西,你可以考虑安装这些文档。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63391524

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档