【问题标题】:KUBECTL commands not executing after configuring proxy配置代理后不执行 KUBECTL 命令
【发布时间】:2022-01-03 22:56:06
【问题描述】:

我正在建立一个实验室供自己学习,我正在尝试在专用网络中的 Ubuntu 20.04 虚拟机上建立一个 3 节点集群。 请耐心等待我,因为我还在学习 :slight_smile: 希望我可以提供所有需要的数据来诊断问题。

起初,我启动了集群,但 3 个节点处于 NotReady 状态,因为我没有运行任何 CNI 插件。

kubectl 获取节点 姓名 状态 角色 年龄 版本 master-node NotReady control-plane,master 2m17s v1.22.4 worker-node-1 NotReady 100s v1.22.4 worker-node-2 NotReady 97s v1.22.4

条件: 类型状态 LastHeartbeatTime LastTransitionTime 原因消息

MemoryPressure False 2021 年 11 月 23 日星期二 16:13:31 +0100 2021 年 11 月 23 日星期二 16:08:25 +0100 KubeletHasSufficientMemory kubelet 有足够的可用内存 DiskPressure False 2021 年 11 月 23 日星期二 16:13:31 +0100 2021 年 11 月 23 日星期二 16:08:25 +0100 KubeletHasNoDiskPressure kubelet 没有磁盘压力 PIDPressure False 2021 年 11 月 23 日星期二 16:13:31 +0100 2021 年 11 月 23 日星期二 16:08:25 +0100 KubeletHasSufficientPID kubelet 有足够的 PID 可用 Ready False 2021 年 11 月 23 日星期二 16:13:31 +0100 2021 年 11 月 23 日星期二 16:08:25 +0100 KubeletNotReady 容器运行时网络未准备好:NetworkReady=false 原因:NetworkPluginNotReady 消息:docker:网络插件未准备好:cni配置未初始化

为了为 CNI 拉取 docker 图像,我必须配置代理,我做了 :slight_smile:

环境 | grep -i http

https_proxy=proxy.xyx.yyyy.com:8080

我现在确认我有外部可访问性,但是我的 kubectl 一直在运行,最后它在相当长的一段时间后超时。

我首先想到的是重启守护进程并重置 kubelet + docker,但没有帮助。 在我取消设置代理变量的那一刻,一切正常。

我只是担心我用于创建 pod 的 CIDR 是否可能用于网络的其余部分 (我用的是 10.244.0.0/16) 但是代理应该只用于外部连接,因此我不确定这是否适用。

有什么想法吗?

Kubernetes 版本: kubectl 版本

客户端版本:version.Info{Major:“1”,Minor:“22”,GitVersion:“v1.22.4”,GitCommit:“b695d79d4f967c403a96986f1750a35eb75e75f1”,GitTreeState:“clean”,BuildDate:“2021-11-17T15 :48:33Z”,GoVersion:“go1.16.10”,编译器:“gc”,平台:“linux/amd64”}

服务器版本:version.Info{Major:“1”,Minor:“22”,GitVersion:“v1.22.4”,GitCommit:“b695d79d4f967c403a96986f1750a35eb75e75f1”,GitTreeState:“clean”,BuildDate:“2021-11-17T15 :42:41Z”,GoVersion:“go1.16.10”,编译器:“gc”,平台:“linux/amd64”}

正在使用的云:专用网络中的虚拟机 安装方式:kubeadm 主机操作系统:

cat /etc/os-release

NAME="Ubuntu"

VERSION="20.04.2 LTS (Focal Fossa)"

ID=ubuntu

ID_LIKE=debian

PRETTY_NAME="Ubuntu 20.04.2 LTS"

VERSION_ID="20.04"

HOME_URL="https://www.ubuntu.com/"

SUPPORT_URL="https://help.ubuntu.com/"

BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"

PRIVACY_POLICY_URL=“数据隐私 | Ubuntu”

VERSION_CODENAME=焦点

UBUNTU_CODENAME=焦点

【问题讨论】:

标签: kubernetes


【解决方案1】:
  • kubectl 通过 API(http) 与 kubernetes 集群通信,因此 kubectl 试图通过代理访问 api 服务器,因此它继续等待。

  • 就像你设置 http_proxy 变量一样,你需要设置另一个 env no_proxy

example :
export no_proxy=<masternode ip>,<workernode ip>,<pod CIDR in you case>,<kubernetes service CIDR>

【讨论】:

    猜你喜欢
    • 2021-11-08
    • 2021-08-30
    • 1970-01-01
    • 2019-07-21
    • 2018-12-17
    • 2019-07-25
    • 2013-05-14
    • 2023-03-09
    相关资源
    最近更新 更多