标签: kubectl

如何查找 Kubernetes POD 重启原因

我已将集群中的 pod 扩展至 20 个,当我第二天看到时,已重新创建了少数扩展的 pod。

当我说重新创建 POD 时,它会被删除并重新创建,并且重新创建的 Pod 和缩放的 Pod 的时间戳会有所不同。

我无法找到重新创建 POD 的原因。

我无法找到哪个 POD 进行了重新创建,因为该 POD 已被删除并消失。Journalctl 中没有关于重新创建哪个 POD 的日志。有什么方法可以进一步调试以找到 POD 重新创建的原因。或 POD 被删除的可能原因是什么。

注意:我定义了就绪性和活性探针,但根据我的理解,这些探针将作用于容器,并且不会导致 POD 重新创建。

kubernetes kubectl

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

启用临时容器 AWS EKS

kubectl debug我正在尝试通过尝试使用在 aws eks 中默认禁用的临时容器来调试 distroless POD 。我正在使用 aws eks 1.21

\n
\xe2\x9c\x97  kubectl debug -it opentelemetry-collector-agent-6hqvf --image=busybox --target=some-app\n\nerror: ephemeral containers are disabled for this cluster (error from server: "the server could not find the requested resource")\n
Run Code Online (Sandbox Code Playgroud)\n

那么如何为 EKS 启用它们呢?

\n

kubernetes kubectl aws-eks

7
推荐指数
1
解决办法
2075
查看次数

跨多个/所有 Kubernetes 命名空间删除资源类型的所有实例

我正在尝试在 Kubernetes 集群上卸载并重新安装 cert-manager。他们的卸载文档提到:

在继续之前,请确保用户创建的所有 cert-manager 资源均已删除。您可以使用以下命令检查任何现有资源:

$ kubectl get Issuers,ClusterIssuers,Certificates,CertificateRequests,Orders,Challenges --all-namespaces

该命令输出数百个资源,分布在二十几个命名空间中。

如何有效地删除它们,而不删除命名空间中的其他任何内容?

kubectl delete命令在删除所有特定类型时需要指定命名空间,如下所示:kubectl delete certificates -n example-ns,所以这在这里不好。

在指定的同时按名称删除每个循环-A也不起作用,因为我需要指定名称空间:

$ kubectl delete -A order.certmanager.k8s.io/fcfa95477bc0149dbc16c99c54faa82e-cert-1862418815
error: a resource cannot be retrieved by name across all namespaces
Run Code Online (Sandbox Code Playgroud)

这里正确的 cli 魔法是什么?

kubernetes google-kubernetes-engine cert-manager kubectl

5
推荐指数
1
解决办法
6232
查看次数

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
查看次数

双端口转发 kubernetes + docker

概括:

我有一个运行 kubectl port-forward 的 docker 容器,将作为 k8s 服务运行的 postgres 服务的端口 (5432) 转发到本地端口 (2223)。在 Dockerfile 中,我暴露了相关端口 2223。然后我通过发布该端口来运行容器 ( -p 2223:2223)

现在,当我尝试通过访问 postgres 时psql -h localhost -p 2223,出现以下错误:

psql: server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
Run Code Online (Sandbox Code Playgroud)

但是,当我docker exec -ti对上述容器执行操作并运行上述 psql 命令时,我能够连接到 postgres。

Dockerfile 命令:

EXPOSE 2223
CMD ["bash", "-c", "kubectl -n namespace_test port-forward service/postgres-11-2 2223:5432"]
Run Code Online (Sandbox Code Playgroud)

Docker 运行命令:

docker run -it --name=k8s-conn-12 -p 2223:2223 my_image_name:latest
Run Code Online (Sandbox Code Playgroud)

docker …

port-forwarding psql docker kubernetes kubectl

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

如何通过 kubectl 执行到 **节点**(不是容器)

如何执行到K8s节点

到目前为止,我只找到了执行节点上运行的容器的方法。

我想避免ssh

kubernetes kubectl

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