【问题标题】:How to run Kubernetes without SSL network如何在没有 SSL 网络的情况下运行 Kubernetes
【发布时间】:2020-07-13 04:40:02
【问题描述】:

我想开始为 Kuberntes 项目进行开发。我想调试master和worker之间的网络。
目前他们正在使用 x509 证书进行 SSL 通信,我需要查看此通信。

我在带有 kubeadm 和 weave 网络插件的 Linux 机器上安装了 Kubernetes 集群,我现在想禁用 SSL 网络以便能够查看它们之间的所有流量。

我尝试了this 回答中描述的步骤:

  • /etc/kubernetes/manifests/kube-apiserver.yaml 中删除了--insecure-port=0
  • --insecure-bind-address=0.0.0.0 添加到/etc/kubernetes/manifests/kube-controller-manager.yaml/etc/kubernetes/manifests/kube-scheduler.yaml
  • 重启kubelet service kubelet restart

我创建了新的部署:kubectl run nginx --image nginx 在主服务器和工作人员中运行 tcpdump -i ens3 -w ./traffic.pcap

部署运行失败。
我查看了 kubelet 日志:journalctl -u kubelet

Apr 01 12:16:57 master kubelet[10614]: E0401 12:16:57.238125   10614 pod_workers.go:190] Error syncing pod 26ead5e19e83a1d9426b732dc183b75d ("kube-controller-manager-master_kube-system(26ead5e19e83a1d9426b732dc183b75d)"), skipping: failed to "StartContainer" for "kube-controller-manager" with CrashLoopBackOff: "Back-off 5m0s restarting failed container=kube-controller-manager pod=kube-controller-manager-master_kube-system(26ead5e19e83a1d9426b732dc183b75d)"
Apr 01 12:16:59 master kubelet[10614]: E0401 12:16:59.238970   10614 pod_workers.go:190] Error syncing pod 448824ad8c321fa307186a36765b0ee4 ("kube-scheduler-master_kube-system(448824ad8c321fa307186a36765b0ee4)"), skipping: failed to "StartContainer" for "kube-scheduler" with CrashLoopBackOff: "Back-off 5m0s restarting failed container=kube-scheduler pod=kube-scheduler-master_kube-system(448824ad8c321fa307186a36765b0ee4)"  

如何禁用 Kubernetes SSL 通信并对其进行调试以进行开发?

【问题讨论】:

    标签: ssl networking kubernetes kube-apiserver


    【解决方案1】:

    添加--insecure-bind-address 后调度程序和控制器管理器没有启动,因为这两个组件不支持此标志。所以你删除它,部署应该可以工作。

    您可以通过运行以下命令来检查日志来验证这一点,您应该会看到错误 unknown flag: --insecure-bind-address

    kubectl logs kube-controller-manager-master_kube-system -n kube-system
    
    kubectl logs kube-scheduler-master_kube-system -n kube-system
    

    编辑:

    对于 API Server 和 kubelet 之间的 http 通信,您可以在 API Server 中将 --kubelet-https 设置为 false。

    【讨论】:

    • 好的,所以在禁用insecure-port 的情况下,我可以看到发送到 API 服务器的内容,但我仍然看不到 API 服务器与工作人员上的 kubelet 之间发送的内容.
    • 为此您可以将 API Server 标志 --kubelet-https 设置为 false
    猜你喜欢
    • 1970-01-01
    • 2022-09-24
    • 2020-09-22
    • 2019-08-17
    • 2011-03-24
    • 1970-01-01
    • 2019-09-04
    • 1970-01-01
    • 2022-01-03
    相关资源
    最近更新 更多