问题标签 [kubespray]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
929 浏览

ansible - 使用kubespray安装kubernetes总是失败,貌似是个bug

我用的是kubespray(v2.11.0) install kubernetes(1.14.0)。我有3个vm。(计划2个master,1个节点)由于网络原因,我使用了内部的image repo和storage server。然后我执行“ansible-playbook -i inventory/mycluster/hosts.yaml --become --become-user=root cluster.yml”命令。第一次,它在node2上失败了。因为任务:[kubernetes-apps/network_plugin/flannel : Flannel | 等待 flannel subnet.env 文件存在]。错误是超时等待。但我执行“kubectl get nodes”我得到了这个:

所以我认为可能我应该将第一个 master 的文件复制到第二个主节点。

然后我再次执行命令“ansible-playbook -i inventory/mycluster/hosts.yaml --become --become-user=root cluster.yml”。这次所有的任务都ok了。没有失败。但我仍然无法在 kubernetes 中获取 node2。您可以在下面看到。

有人告诉我如何解决和调试这个问题。

0 投票
1 回答
4257 浏览

kubernetes - Kubernetes Persistent Volume 从未由本地路径配置器创建

在我的 Kubernetes 集群中,Rancher 在创建 Persistent Volume Claim 并应用 Pod 后从不创建 Persistent Volumes。

解决方案/解决方案在第二次更新下可用。

集群已经安装了 Kubespray。本地路径配置的配置inventory/myclster/group_vars/k8s-cluster/addons.yml

重现问题的步骤:

创建 PVC:
kubectl create -f https://raw.githubusercontent.com/rancher/local-path-provisioner/master/examples/pvc.yaml

结果:创建 PVC、名称local-path-pvc、状态 Pending、存储类local-path

创建 Pod
kubectl create -f https://raw.githubusercontent.com/rancher/local-path-provisioner/master/examples/pod.yaml

结果:
已创建 Pod,名称create-pvc-123,状态 Waiting:ContainerCreating。

用 描述 Pod kubectl

我尝试了不同的图表,在所有情况下都没有创建持久卷。ServiceAccount local-path-provisioner-service-account 存在。本地路径配置器的 Deployment 有一个 Pod。

更新
在服务器上,日志包含几个错误,sudo journalctl -xeu kubelet | grep 'fail'

更新 - 解决方案?我按照文档
中的描述更改了 ConfigMap 'local-path-config' 。 但是,Kubespray 中的jinja 模板在配置中缺少“setup”和“teardown”属性。

当我添加 desetupteardownproperties 时,Kubernetes 创建了 PV 并且 Pod 启动了。

Kubespray 没有在模板中提供这些属性的原因是什么?

0 投票
2 回答
951 浏览

kubernetes - 在不破坏集群的情况下更改容器运行时

我们正在运行具有 10-100 个节点的多个 kubespray 部署集群。

1.20 kubernetes 弃用 dockershim 支持-> https://github.com/kubernetes/kubernetes/blob/ab32085bf36fc7af1ded30456e2f09399dc1115f/CHANGELOG/CHANGELOG-1.20.md#deprecation

如何将容器运行时更​​改为 containerd - 不删除节点且不破坏 master。

0 投票
0 回答
296 浏览

kubespray - 如何升级 kubespray kubernetes 集群容器运行时?

使用特定容器运行时(即:Docker)将现有 kubernetes 集群升级到另一个(即:Containerd)的过程是什么

更改 Hamel 中的运行时并执行 uograde_cluster 就足够了吗?

大概这会被更频繁地询问,考虑到 kubernetes 1.20 弃用 Docker,记录一个过程可能是有意义的。

0 投票
0 回答
1057 浏览

networking - 如何正确启用和连接用于 Kubespray 的 MetalLB 插件?

我正在尝试使用 Kubespray 让我的集群运行起来,我不得不说它是一个很棒的工具,但我无法让它完全正确地为我工作。具体来说,我正在尝试启用 metalLB 插件,但它似乎不起作用。

在我自己的尝试失败后,我从 kubespray 拉取请求中退回到测试步骤,该请求将 metalLB 添加为插件,但这仍然失败。

拉取请求 kubespray/pull/6238 链接

指出我的实际步骤。

  1. vagrant destroy(处理我的最后一次尝试)
  2. 更改/inventory/mycluster/group_vars/k8s-cluster/addons.yml以启用 MetalLB,版本 0.9.3,第 2 层,ip 范围192.168.1.201-192.168.1.250
  3. 变更/inventory/mycluster/group_vars/k8s-cluster/k8s-cluster.ymlkube_network_plugin: flannelkube_proxy_strict_arp: truekubeconfig_localhost: true
  4. ansible-playbook -i inventory/mycluster/hosts.yaml --become --become-user=root cluster.yml --private-key=~/.ssh/id_rsa
  5. vagrant up
  6. kubectl apply -f testlb.yaml (apply the test service from the pull request test)

my-service 的 external-ip 仍然挂起,因为它无法解析。似乎没有 metallb 组件正在运行。在执行过程中,很多文字飞速掠过,但我没有看到任何 metallb 特定的消息。

我的计划是使用集群来玩、学习和开发,最好是使用 jenkins-x。它不打算用作生产集群或供公众访问。

我的网络很简单,宽带集线器/路由器/防火墙位于 192.168.0.1。该路由器在 192.168.0.* 范围内分配网络地址

我的 Kubespray 集群在四核 ubuntu 机器上的 virtualbox 中运行 3 个节点。

为什么外部 IP 仍处于待处理状态,我该如何解决?

0 投票
1 回答
94 浏览

kubernetes - 在 kubernetes 主机上挂载 glusterfs

在通过kubespray安装kubernetes的服务器上挂载glusterfs时,出现错误:

[11:41:47] [root@kube01.unix.local ~ ]# lsb_release -a 发行商 ID:Debian 描述:Debian GNU/Linux 9.12 (stretch) 发行版:9.12 代号:stretch

在没有 kubespray 的服务器上成功挂载。如何修复此错误?

0 投票
2 回答
1014 浏览

python - kubespray 和 python 包的问题

我想安装KubernetesKubespary但 python 包有问题。我使用Ubuntu 20.10python3

当我使用此命令运行 ansible 角色时:

ansible-playbook -i inventory/mycluster/hosts.yaml --become --become-user=root cluster.yml 我有这个错误。

我该如何解决这个问题? "msg": "No package matching 'python-apt' is available"} 谢谢。

0 投票
1 回答
348 浏览

proxy - 在 download_localhost 中使用 Kubespray,download_file 错误

我目前正在尝试在 download_localhost: true 模式下使用 Kubespray。我也将 download_run_once 设置为 true。一些信息,我在我们网络上的代理后面运行它,在 443 处我们的网络不允许其他任何东西。一切运行正常,图像下载,直到我到达 download_file 步骤。看起来无论我做什么,download_file 都不会选择代理设置。我已经通过 ansible-playbook 命令上的 -e 选项设置它,我已经在 group_vars 文件中设置它,并且我还确保 use_proxy 对于 download_file 任务是打开的。我已经确认我可以在本地主机上 wget 文件,所以我知道它在我们的网络上没有被阻止。我只是想弄清楚这是否是一个错误。谢谢!

编辑:我对文件进行的唯一修改示例以帮助重现:

./inventory/mycluster/group_vars/all/all.yml

./extra_playbooks/roles/download/defaults/main.yml

/etc/环境

./cluster.yml

我还尝试将以下设置添加到 download_file | 下载项目任务:

0 投票
1 回答
807 浏览

docker - Kubernetes Multus:不同节点上的 pod 之间没有 macvlan 连接(无法 ping)

我有一个问题,我有一个带有两个工作节点和一个主节点的 Kubernetes 集群。让我们对它们进行 W1、W2 和 M 的实验。我有一个部署,它创建了一组 CentOS7 pod,每个工人都有一些。我使用 Multus,以便在每个 pod 上都有一个额外的 net1 接口,该接口映射到 worker 上的 eth1。所有的 pod 都有 net1 连接到同一个名为“up-net”的 macvlan。

在 W1 和 W2 上,我可以在同一节点上运行的 pod 之间 ping,但 W1 中的 pod 无法 ping W2 中的另一个 pod,反之亦然。ping eth0 上的标准 kube 网络在所有情况下都有效。只是macvlan有这个问题。

简而言之,这就是问题所在。现在让我更详细地描述我们正在使用的设置。

我们有一个带有 3 台物理服务器的实验室,我们在上面部署了 Kolla(它是安装在 Kubernets 上的 Openstack)。在这个 Openstack 安装中,我再次尝试设置 Kubernetes 安装,主节点和工作节点托管在 Openstack 虚拟机(即 W1、W2、M)中,VM 运行在 Openstack 中。这意味着我们总共有三层虚拟化。只是想提一下,如果有人知道基于此的任何潜在线索。但我没有遇到任何我认为与虚拟化有关的问题。还可以提一下,这些 vm 有两个接口 eth0 和 eth1。Eth1 是我想要 macvlan 的设备。最后,对于虚拟机和物理服务器,操作系统都是 CentOS7。

关于 Kubernetes 安装:

  • Kubernetes (overcloud) 是使用 Kubespray 安装的。
  • 我编辑了主机文件,使 node1 成为主 node2 W1 和 node3 W2。
  • 我将 kube_network_plugin_multus 设置为 true 。
  • Whereabouts 用于为 net1 接口分配 IP 地址。
  • 我使用 calico 作为网络驱动程序。

以下是用于 macvlan 网络的配置:

这是 Pod 的配置:

我没有明确指定他们最终在哪个工作人员上,但通常负载均衡器会平均分配四个 pod。

此外,这里是 Kube 系统 pod:

现在已经对我运行的实验解释了设置。

考虑工人 1 (W1) 上的 pod P1a 和 P1b。在工人 2 (W2) 上有 P2a 和 P2b。我使用 ping 和 tcpdump 来访问连接。

从 P1a 到 P1b 的 Ping 工作正常,tcpdump 告诉我 W1 的 eth1 设备上有 icmp 流量。W2也是如此。

但是,当我从 P1a ping P2a 时,它看起来如下所示:

然而,一个有趣的线索是,在这种情况下,icmp 数据包最终会出现在 pod 的 lo 接口上:

你认为我的路由表可能有问题吗?我什么都看不到,但我对网络有点陌生:

最后,列出我尝试过但不起作用的事情的清单:

  • 在 W1、W2 和 M 上的 eth1 上将 eth1 设置为混杂模式。
  • 为 ipv4 禁用了 rp_filter(因为我发现 macvlan 对 macaddresses 做了奇怪的事情)。
0 投票
2 回答
2497 浏览

kubernetes - kubernetes:无法加载现有证书 apiserver-etcd-client:

我的集群证书已过期,现在我无法执行任何 kubectls 命令。

我使用 Kubespray 创建了这个集群,kubeadm 版本是 v1.16.3 和 kubernetesVersion v1.16.3

并且发现 /etc/kubernetes/pki 目录下缺少 apiserver-etcd-client.crt 和 apiserver-etcd-client.key 文件。

我尝试了以下命令,但没有任何效果并显示错误:

Kubespray 命令:

上述命令以以下错误结束:

失败的!=> {"attempts": 5, "changed": true, "cmd": ["/usr/local/bin/kubeadm", "--kubeconfig", "/etc/kubernetes/admin.conf", "token ", "create"], "delta": "0:01:15.058756", "end": "2021-02-05 13:32:51.656901", "msg": "非零返回码", "rc ": 1, "start": "2021-02-05 13:31:36.598145", "stderr": "超时等待条件\n要查看此错误的堆栈跟踪,请使用 --v=5 或更高版本执行", "stderr_lines": ["timed out waiting for the condition", "查看此错误的堆栈跟踪执行 --v=5 或更高"], "stdout": "", "stdout_lines": [] }