kubernetes中工作节点上的连接拒绝错误

如何解决kubernetes中工作节点上的连接拒绝错误

我正在kubernetes中建立一个2节点集群。 1个主节点和1个从节点。 设置主节点后,我在工作节点上执行了docker,kubeadm,kubelet,kubectl的安装步骤,然后运行join命令。在主节点上,我看到2个节点处于就绪状态(主节点和辅助节点),但是当我尝试在辅助节点上运行任何kubectl命令时,出现如下所示的拒绝连接错误。我没有看到任何admin.conf,也没有在.kube / config中设置任何内容。这些文件是否也需要位于工作程序节点上?如果可以的话,我该如何获得呢?如何解决以下错误?感谢您的帮助

root @ kubework:/ etc / kubernetes#kubectl获取节点 与服务器localhost:8080的连接被拒绝-您指定了正确的主机或端口吗?

root @ kubework:/ etc / kubernetes#kubectl集群信息

要进一步调试和诊断群集问题,请使用“ kubectl cluster-info dump”。 与服务器localhost:8080的连接被拒绝-您是否指定了正确的主机或端口? root @ kubework:/ etc / kubernetes#

解决方法

是,需要这些文件。将这些文件移动到工作节点上相应的.kube / config文件夹中。

,

root @ kubework:/ etc / kubernetes#kubectl获取节点与 服务器localhost:8080被拒绝-您指定了正确的主机还是 端口?

Kubcetl默认情况下已配置并在主服务器上运行。它需要一个kube-apiserver容器和~/.kube/config

对于辅助节点,我们不需要使用kube-apiserver,但我们要使用主配置来传递它。 为此,我们必须将~/.kube/config文件从主服务器复制到工作服务器上的~/.kube/config。用户在worker和master上执行kubcetl时的值~(当然可能有所不同)。
完成此操作后,您可以完全像在主节点上一样使用工作节点上的kubectl命令。

,

即使使用kubectl on master node作为非root帐户,这也是预期的行为,默认情况下,此配置文件为root帐户存储在/etc/kubernetes/admin.conf中:

要使kubectl适用于非root用户,请运行以下命令,它们也是kubeadm init输出的一部分:

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
  • 或者,在主服务器上,如果您是root用户,则可以运行:
    export KUBECONFIG=/etc/kubernetes/admin.conf

(可选)Controlling your cluster from machines other than the control-plane node

scp root@<control-plane-host>:/etc/kubernetes/admin.conf .
kubectl --kubeconfig ./admin.conf get nodes

Note

KUBECONFIG环境变量包含 kubeconfig文件的列表。对于Linux和Mac,该列表以冒号分隔。对于Windows,列表以分号分隔。 KUBECONFIG环境变量不是必需的如果KUBECONFIG环境变量不存在,则kubectl使用默认的kubeconfig文件$ HOME / .kube / config

,

我尝试了许多解决方案,它们只是将 /etc/kubernetes/admin.conf 复制到 ~/.kube/config。但没有一个对我有用。

我的操作系统是 ubuntu,通过删除、清除和重新安装以下内容来解决:

  1. sudo dpkg -r kubeadm kubectl
  2. sudo dpkg -P kubeadm kubectl
  3. sudo apt-get install -y kubelet kubeadm kubectl
  4. sudo apt-mark 持有 kubelet kubeadm kubectl
  5. curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"(再次下载 kubectl,这确实有效)
  6. kubectl 获取节点

名称状态角色年龄版本

mymaster Ready control-plane,master 31h v1.20.4

myworker Ready 31h v1.20.4

,

Davidxxx 的解决方案对我有用。

就我而言,我发现在以下路径的工作节点中存在一个文件:

/etc/kubernetes/kubelet.conf

您可以将其复制到 ~/.kube/config 并且它也能正常工作。我自己测试过。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?