标签: kubernetes

通过 SSH 连接到私有集群上的 GKE 节点

我在 GKE 上创建了一个私有集群,并与该集群一起配置了 NAT。我还有一个堡垒设置来访问私有集群。我正在尝试通过 SSH 连接到其中一个节点,但无法执行此操作,因为私有节点没有外部 IP。有什么办法可以做到这一点吗?

networking ssh kubernetes google-cloud-platform

4
推荐指数
1
解决办法
6616
查看次数

Pod 无法挂载 ConfigMap:`无法同步 configmap 缓存:等待条件超时`

我正在尝试在 v1.18 GKE kubernetes 集群上部署 pod

我的 Pod 循环崩溃,因为它无法挂载其配置映射:

$ kubectl describe pod <pod>

...

Volumes:
  cm-cxf-conf:
    Type:      ConfigMap (a volume populated by a ConfigMap)
    Name:      project-cm-cxf-conf
    Optional:  false

...

Events:
  Type     Reason                  Age                    From                     Message
  ----     ------                  ----                   ----                     -------
  Warning  FailedMount             41m                    kubelet                  MountVolume.SetUp failed for volume "cm-cxf-conf" : failed to sync configmap cache: timed out waiting for the condition

...
Run Code Online (Sandbox Code Playgroud)

但是,配置映射确实存在:

$ kubectl get configmap project-cm-cxf-conf
project-cm-cxf-conf            1      4h40m
Run Code Online (Sandbox Code Playgroud)

导致此错误的原因可能是什么?我该如何修复它?

相关主题

kubernetes

4
推荐指数
1
解决办法
3万
查看次数

kubernetes coredns 处于 CrashLoopBackOff 状态,并出现“未找到名称服务器”错误

我曾尝试在我的裸机服务器上使用 kubeadm 构建 kubernetes,并将 containerd 作为 cri,但安装 cni (weave-net) 后似乎 coredns 无法启动。

两个 coredns 容器现在处于“CrashLoopBackOff”状态,它们的日志为:

plugin/forward: no nameservers found
Run Code Online (Sandbox Code Playgroud)

而“kubectl描述pod”的描述如下:

Events:
  Type     Reason            Age                    From               Message
  ----     ------            ----                   ----               -------
  Warning  FailedScheduling  4m52s (x9 over 13m)    default-scheduler  0/1 nodes are available: 1 node(s) had taint {node.kubernetes.io/not-ready: }, that the pod didn't tolerate.
  Normal   Scheduled         4m7s                   default-scheduler  Successfully assigned kube-system/coredns-58cf647449-8pq7k to k8s
  Normal   Pulled            3m13s (x4 over 4m6s)   kubelet            Container image "localhost:5000/coredns:v1.8.4" already present on machine
  Normal   Created           3m13s (x4 …
Run Code Online (Sandbox Code Playgroud)

domain-name-system kubernetes kubeadm

4
推荐指数
1
解决办法
6633
查看次数

AKS 中的 MC_ 前缀来自什么?

在 AKS 中创建集群时,默认情况下会创建 2 个资源组。其中一个前缀为MC_,根据文档,“称为节点资源组,包含与集群关联的所有基础设施资源。这些资源包括 Kubernetes 节点虚拟机、虚拟网络和存储。默认情况下,节点资源组的名称类似于 MC_myResourceGroup_myAKSCluster_eastus "。

有谁知道MC前缀是否代表什么,或者只是 2 个随机字母?

kubernetes

4
推荐指数
1
解决办法
2899
查看次数

将一个容器 FS 树绑定挂载到另一个容器以用于调试或临时容器?

我正在测试 k8s 调试功能,包括调试 pod 和临时容器,但我无法弄清楚如何将“目标”pod 的文件系统正确映射到调试容器中。

我想使用递归绑定挂载 * 链接两个不相交的挂载命名空间,以便容器 A 将容器 B 的根视为容器 B 的根,/containerB反之亦然。包括所有卷和其他安装。

目标:同时访问调试和目标容器文件系统

目标是让目标 pod 的完整文件系统树,包括映射到调试容器的子目录(例如 )的卷和其他挂载/run/target。如果目标容器挂载持久卷,则应映射这些挂载点,因此,例如,如果目标容器具有,/data则调试容器应具有已安装的/run/target/data.

或者,可以将调试容器文件系统树“注入”到目标容器中,因此可以在调试容器/run/debug时公开可用的调试容器根。nsenter包括它的像 procfs 这样的挂载,所以它的功能齐全。

我希望能够例如调试容器提供的gdb -p $target_pid位置。为此,必须能够从目标容器中找到进程可执行文件。gdbgdb

我探索了一些解决方法。但我真正想做的是将mount --rbind目标容器 FS 树转移到来宾上,反之亦然。给定一个定制的特权调试容器,例如:

apiVersion: v1
kind: Pod
metadata:
  name: debugcontainer
  namespace: default
spec:
  nodeName: TARGET_NODE_NAME_HERE
  enableServiceLinks: true
  hostIPC: true
  hostNetwork: true
  hostPID: true
  restartPolicy: Never
  containers: …
Run Code Online (Sandbox Code Playgroud)

mount namespaces linux-kernel docker kubernetes

4
推荐指数
1
解决办法
1137
查看次数

Kubernetes:Pod IP 地址超出 --pod-network-cidr 中指定的范围

升级到 v1.24.0 后(删除 Dockershim 后),我必须安装cri-dockerd,然后我执行了以下操作:

\n
sudo kubeadm init --pod-network-cidr=10.244.0.0/16 --cri-socket=unix:///var/run/cri-dockerd.sock --apiserver-advertise-address=192.168.0.196\n
Run Code Online (Sandbox Code Playgroud)\n

我选择flannel作为网络插件:

\n
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml\n
Run Code Online (Sandbox Code Playgroud)\n

到目前为止,一切都按预期进行,但在主节点上启用调度、加入工作节点并部署我的 Pod 和服务后,我注意到一个奇怪的网络问题,即NodePortClusterIP服务在节点之间无法工作(使用一个节点时没有问题) 。

\n

后来我发现 pod 是从docker 网络( 172.17.0.*) 获取 IP 地址,而不是从--pod-network-cidr=10.244.0.0/16:

\n
masterzulu@master-zulu:~$ kubectl get pods --all-namespaces -o wide\nNAMESPACE      NAME                                  READY   STATUS    RESTARTS   AGE     IP              NODE          \n\ndjango-space   django-588cb669d4-46b4w               1/1     Running   0          3m35s   172.17.0.4      master-zulu\ndjango-space   postgres-deployment-b58d5ff94-hs7t4   1/1     Running   0          3m35s   172.17.0.5      master-zulu\nkube-system    coredns-6d4b75cb6d-8gw6c              1/1     Running   0 …
Run Code Online (Sandbox Code Playgroud)

networking kubernetes kubeadm kubectl

4
推荐指数
1
解决办法
2785
查看次数

所有 kube-system pod 不断崩溃,etcd 收到 sigterm

我正在尝试设置一个本地 Kubernetes 集群。首先,我使用 kubeadm 在一个节点上初始化我的控制平面。但所有 kube 系统 pod 都会不断崩溃。我通过 crictl 深入研究了 pod 日志,结果发现大多数 pod 崩溃是因为它们无法到达 上的 kube-apiserver <node IP>:6443。并且 kube-apiserver 似乎崩溃了,因为它无法到达 上的 etcd 127.0.0.1: 2379。etcd 会“崩溃”,因为几分钟后它会在没有任何明显原因的情况下收到 sigterm。在 etcd 容器进程上使用 strace 可以得到:

--- SIGTERM {si_signo=SIGTERM, si_code=SI_USER, si_pid=0, si_uid=0} ---
Run Code Online (Sandbox Code Playgroud)

我尝试过 flanneld、calico 和 weave net 作为 CNI,但没有成功。交换从一开始就被禁用了。防火墙没有任何自定义规则。作为一名 kubernetes 新手,我想不出其他可能的失败原因,如果有任何提示,我将不胜感激。

系统信息:

kubernetes etcd kubeadm containerd

4
推荐指数
1
解决办法
1879
查看次数

未能创建 fsnotify 观察程序:打开的文件太多

我在尝试跟踪 Kubernetes Pod 的日志时收到此错误。

failed to create fsnotify watcher: too many open files

linux linux-kernel kubernetes

4
推荐指数
1
解决办法
1万
查看次数

Kubernetes nginx-ingress 负载平衡器外部 IP 待处理

在我的 Kubernetes 集群中,我想将 nginx 负载均衡器绑定到节点的外部 IP。但是,外部 IP 始终显示为“待处理”。

集群在两个使用 weave 的根服务器上运行。

我能做些什么来解决这个问题吗?使用“externalIPs”数组是有效的,但不是我想要的,因为 IP 不是由 Kubernetes 管理的。

nginx kubernetes ingress

3
推荐指数
1
解决办法
3819
查看次数

Kubernetes 中尾随“-”的目的是什么 apply -f -

我通过了以下内容,它对从appsettings.json文件中创建 kubernetes 机密进行了试运行,然后将其通过管道传输到 kubernetes apply。我认为-f将采用--dry-run创建的秘密的文件名并在应用秘密时使用它,但我想知道尾随-是否有任何意义,或者它只是一个错字?

kubectl create secret generic test --from-file=appsettings.json --dry-run -oyaml | kubectl apply -f -

linux options flags kubernetes

3
推荐指数
2
解决办法
1222
查看次数