首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“找到多个CRI套接字,请使用-cri-套接字选择一个”

“找到多个CRI套接字,请使用-cri-套接字选择一个”
EN

Stack Overflow用户
提问于 2019-09-10 09:58:45
回答 2查看 7.8K关注 0票数 1

遇到的问题

当使用Kubespray CRI -OCilium部署集群时,我发现有多个CRI套接字可供选择时出错。

全误差

代码语言:javascript
复制
fatal: [p3kubemaster1]: FAILED! => {"changed": true, "cmd": " mkdir -p /etc/kubernetes/external_kubeconfig &&  /usr/local/bin/kubeadm  init phase   kubeconfig admin --kubeconfig-dir /etc/kubernetes/external_kubeconfig  --cert-dir /etc/kubernetes/ssl --apiserver-advertise-address 10.10.3.15 --apiserver-bind-port 6443  >/dev/null && cat /etc/kubernetes/external_kubeconfig/admin.conf && rm -rf /etc/kubernetes/external_kubeconfig ", "delta": "0:00:00.028808", "end": "2019-09-02 13:01:11.472480", "msg": "non-zero return code", "rc": 1, "start": "2019-09-02 13:01:11.443672", "stderr": "Found multiple CRI sockets, please use --cri-socket to select one: /var/run/dockershim.sock, /var/run/crio/crio.sock", "stderr_lines": ["Found multiple CRI sockets, please use --cri-socket to select one: /var/run/dockershim.sock, /var/run/crio/crio.sock"], "stdout": "", "stdout_lines": []}

有趣的部分

代码语言:javascript
复制
kubeadm  init phase kubeconfig admin --kubeconfig-dir /etc/kubernetes/external_kubeconfig [...] >/dev/null,"stderr": "Found multiple CRI sockets, please use --cri-socket to select one: /var/run/dockershim.sock, /var/run/crio/crio.sock"}

我试过的

  • 1)我尝试在--cri-socket中设置/var/lib/kubelet/kubeadm-flags.env标志:
代码语言:javascript
复制
KUBELET_KUBEADM_ARGS="--container-runtime=remote --container-runtime-endpoint=/var/run/crio/crio.sock --cri-socket=/var/run/crio/crio.sock"

=>没什么区别

  • 2)我检查了/etc/kubernetes/kubeadm-config.yaml,但它已经包含了以下部分:
代码语言:javascript
复制
apiVersion: kubeadm.k8s.io/v1beta2
kind: InitConfiguration
localAPIEndpoint:
  advertiseAddress: 10.10.3.15
  bindPort: 6443
certificateKey: 9063a1ccc9c5e926e02f245c06b8d9f2ff3xxxxxxxxxxxx
nodeRegistration:
  name: p3kubemaster1
  taints:
  - effect: NoSchedule
    key: node-role.kubernetes.io/master
  criSocket: /var/run/crio/crio.sock

=>已经用criSocket标志结束了,所以没什么可做的.

  • 3)尝试编辑ansible脚本以将--cri-socket添加到现有命令中,但Unknow command --cri-socket失败了

现有:

代码语言:javascript
复制
{% if kubeadm_version is version('v1.14.0', '>=') %}
    init phase`

试过:

代码语言:javascript
复制
{% if kubeadm_version is version('v1.14.0', '>=') %}
    init phase --crio socket /var/run/crio/crio.sock`

理论

问题似乎来自于命令kubeadm init phase,它与--crio-socket标志不兼容.(见第3点)

即使使用配置文件设置了正确的套接字(参见第2点),kubeadm init phase也不使用它。

任何想法都会被采纳;)

thx

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-18 11:57:47

我终于拿到了!

最初的祈祷命令是:

kubeadm init phase kubeconfig admin --kubeconfig-dir {{ kube_config_dir }}/external_kubeconfig

--kubeconfig-dir标志似乎没有考虑到crio套接字的数量。

所以我把台词改为:

kubeadm init phase kubeconfig admin --config /etc/kubernetes/kubeadm-config.yaml

对于有类似问题的人:

使其在主服务器上工作的InitConfig部件如下:

代码语言:javascript
复制
apiVersion: kubeadm.k8s.io/v1beta2
kind: InitConfiguration
localAPIEndpoint:
  advertiseAddress: 10.10.3.15
  bindPort: 6443
certificateKey: 9063a1ccc9c5e926e02f245c06b8d9f2ff3c1eb2dafe5fbe2595ab4ab2d3eb1a
nodeRegistration:
  name: p3kubemaster1
  taints:
  - effect: NoSchedule
    key: node-role.kubernetes.io/master
  criSocket: /var/run/crio/crio.sock

在库贝斯祈祷中,您必须更新文件roles/kubernetes/client/tasks/main.yml的第57行。

您必须注释初始的--kubeconfig-dir部分,并将其替换为InitConfig文件的路径。

对我来说,它是由库贝大师在/etc/kubernetes/kubeadm-config.yaml上祈祷而产生的。检查此文件是否存在于您的侧,并且它是否包含nodeRegistration部分中的criSocket键。

票数 1
EN

Stack Overflow用户

发布于 2019-09-13 09:22:21

我做了一些研究,并找到了的github线程。

而不是指给我看另一个这里

这似乎是一个kubeadm问题,已经解决了,所以解决方案在v1.15中可用,请您升级到那个版本(我不确定您使用的是哪个版本,基于我已经解决的两个问题),看看这个问题是否仍然存在?

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

https://stackoverflow.com/questions/57868351

复制
相关文章

相似问题

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