gpt4 book ai didi

kubernetes - 如何调试 kubectl 申请 kube-flannel.yml?

转载 作者:行者123 更新时间:2023-12-04 04:24:08 35 4
gpt4 key购买 nike

我正在尝试按照以下文档创建一个 kubernetes 集群:https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/

首先,我在带有 Vagrant 的 VirtualBox 中的 Coreos (1520.9.0) 上安装了带有 docker 镜像的 kubeadm:

docker run -it \
-v /etc:/rootfs/etc \
-v /opt:/rootfs/opt \
-v /usr/bin:/rootfs/usr/bin \
-e K8S_VERSION=v1.8.4 \
-e CNI_RELEASE=v0.6.0 \
xakra/kubeadm-installer:0.4.7 coreos

这是我的 kubeadm 初始化:
kubeadm init --pod-network-cidr=10.244.0.0/16
运行命令时:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/v0.9.1/Documentation/kube-flannel.yml

它返回:
clusterrole "flannel" configured
clusterrolebinding "flannel" configured
serviceaccount "flannel" configured
configmap "kube-flannel-cfg" configured
daemonset "kube-flannel-ds" configured

但是如果我检查“kubectl get pods --all-namespaces”

它返回:
NAMESPACE     NAME                              READY     STATUS             RESTARTS   AGE
kube-system etcd-coreos1 1/1 Running 0 18m
kube-system kube-apiserver-coreos1 1/1 Running 0 18m
kube-system kube-controller-manager-coreos1 0/1 CrashLoopBackOff 8 19m
kube-system kube-scheduler-coreos1 1/1 Running 0 18m

journalctl -f -u kubelet我可以看到这个错误: Unable to update cni config: No networks found in /etc/cni/net.d
我怀疑命令 kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/v0.9.1/Documentation/kube-flannel.yml 有问题

有没有办法知道为什么这个命令不起作用?我可以从任何地方获取一些日志吗?

最佳答案

就在今晚我用了kubespray在 CoreOS 上使用 flannel (vxlan) 配置一个 vagrant 集群,我也对 flannel 如何成为 Kubernetes 中的 Pod 感到困惑

事实证明,as seen here , 他们正在使用 flannel-cni图片 from quay.io使用 flannel side-car 和 hostDir volume-mounts 写出 CNI 文件;它输出 cni-conf.json (将 CNI 配置为使用 flannel),然后 net-conf.json (配置法兰绒使用的子网和后端)。

我希望 jinja2 mustache 语法不会混淆答案,但我发现看到 Kubernetes 的人们选择“真正地”做它来与示例进行比较和对比是非常有趣的 DaemonSet在 flannel-cni README 中给出。我想这是一个很长的说法:尝试 flannel-cni README 中的描述符,然后如果它不起作用,看看它们是否与已知工作的 kubespray 设置有某种不同

更新:作为一个具体的例子,观察 the Documentation yaml不包括 --iface= 开关,如果您的 Vagrant 设置同时使用 NAT 和“private_network”,那么这可能意味着 flannel 绑定(bind)到 eth0 (NAT 之一)而不是 eth1具有更静态的 IP。我看到了文档中提到的警告,但无法立即记忆起在哪里引用它

更新 2

Is there a way to know why this command doesn't work? Can I get some logs from anywhere?



人们几乎总是可以以相同的方式访问 Pod 的日志(甚至是静态定义的日志,例如 kube-controller-manager-coreos1 ): kubectl --namespace=kube-system logs kube-controller-manager-coreos1 ,并在 CrashLoopBackOff 情况下,添加 -p for "-p"revious 将显示最近一次崩溃的日志(但只有​​几秒钟,而不是无限期),偶尔会显示 kubectl --namespace=kube-system describe pod kube-controller-manager-coreos1将在底部的“事件”部分中显示有用的信息,如果因原因终止,则在顶部附近的“状态” block 中显示有用的信息

如果出现非常严重的故障,例如 apiserver 无法启动(因此 kubectl logs 不会做任何事情),然后 ssh-ing 到节点并使用 journalctl -u kubelet.service --no-pager --lines=150 的混合和 docker logs ${the_sha_or_name}尝试查看任何错误文本。您几乎肯定需要 docker ps -a在后一种情况下,查找已退出容器的 sha 或名称,但同样的“仅几秒钟”也适用,因为死容器将在一段时间后被修剪。

在 vagrant 的情况下,可以通过以下几种方式之一 ssh 进入 VM:
  • vagrant ssh coreos1
  • vagrant ssh-config > ssh-config && ssh -F ssh-config coreos1
  • 或者如果它有一个“private_network”地址,例如 192.168.99.101 等,那么您通常可以 ssh -i ~/.vagrant.d/insecure_private_key core@192.168.99.101但是前两个中的一个几乎总是更方便
  • 关于kubernetes - 如何调试 kubectl 申请 kube-flannel.yml?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47661170/

    35 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com