Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

添加集群成功,但是cluster状态一直是False #3771

Closed
donkeywon opened this issue Jul 5, 2023 · 18 comments
Closed

添加集群成功,但是cluster状态一直是False #3771

donkeywon opened this issue Jul 5, 2023 · 18 comments
Labels
kind/question Indicates an issue that is a support question.

Comments

@donkeywon
Copy link

Please provide an in-depth description of the question you have:
现象是join集群后,member集群的状态一直是False,controller manager报Unauthorized

  1. 在测试环境host集群使用kubectl karmada init命令部署了karmada
  2. 然后使用另一个集群下的/root/.kube/config添加了member集群
kubectl karmada join dev --kubeconfig=/etc/karmada/karmada-apiserver.config --cluster-kubeconfig=path/member.config
  1. 发现cluster状态一直是False
kubectl --kubeconfig=/etc/karmada/karmada-apiserver.config get cluster
  1. 查看controller-manager的日志发现一堆Unauthorized
    image
  2. 看了遍代码也没发现什么问题,看了sa clusterrole clusterrolebinding什么的也都正常,更奇怪的是,我在本地用kind起了两个集群(v1.23.4版本),用上述同样的步骤操作下来member cluster状态是True

What do you think about this question?:
猜测是证书相关的问题,没有排查思路,如果需要额外提供其他信息我可以贴上来

Environment:

  • Karmada version: 1.6.0
  • Kubernetes version: 1.23.4
  • Others:
@donkeywon donkeywon added the kind/question Indicates an issue that is a support question. label Jul 5, 2023
@whitewindmills
Copy link
Member

首先请确认下member集群上创建的sa的token可以用于正常访问member集群,如果可以的话对比下member集群上sa的token是否和Karmada控制面一致。

@chaunceyjiang
Copy link
Member

--cluster-kubeconfig=path/member.config

你的kubeconfig 里面有没有 insecure-skip-tls-verify: true 参数?

@donkeywon
Copy link
Author

@whitewindmills member集群上有两个secret里都有token,控制面的token跟sa的token不一致,但是跟另一个token一致
image

image

member集群的apiserver日志里报invalid bearer token
image

@donkeywon
Copy link
Author

donkeywon commented Jul 6, 2023

--cluster-kubeconfig=path/member.config

你的kubeconfig 里面有没有 insecure-skip-tls-verify: true 参数?

@chaunceyjiang 没改这个参数,是false

@whitewindmills
Copy link
Member

whitewindmills commented Jul 6, 2023

@donkeywon 你不需要关心除karmada-dev以外的secret,目前看似乎member集群上karmada-dev这个sa token可能存在问题,你能进一步确认吗?你可以使用podman或者curl请求member集群的apiserver,使用karmada-dev这个sa token。例如使用curl:

curl -H "Authorization: Bearer <your token>" https://<apiserver-addr>:6443/api -k

如果请求返回Unauthorized,则代表这个token非法,需要进一步从member集群上排查。

@donkeywon
Copy link
Author

@whitewindmills 确实是401

image

@chaosi-zju
Copy link
Member

请问你的成员集群是怎么来的?用的什么命令?然后有没有手动指定kubeconfig地址?

@donkeywon
Copy link
Author

@chaosi-zju 测试环境有两个k8s集群,都是按照同一个步骤部署的,kubeconfig都在$HOME/.kube/config下面,你说的命令是指什么命令?

@chaosi-zju
Copy link
Member

@chaosi-zju 测试环境有两个k8s集群,都是按照同一个步骤部署的,kubeconfig都在$HOME/.kube/config下面,你说的命令是指什么命令?

我以为你是自己用kind命令,调kind create ... --kubeconfig ...部署的,我在想会不会你环境上有残留的kubeconfig A, 然后你部署时指定的是kubeconfig B, 然后在某些步骤你搞混了

@donkeywon
Copy link
Author

@chaosi-zju 这个不会的,我本地用的kind,测试环境是提前部署好的已经投入使用的k8s集群

@donkeywon
Copy link
Author

@whitewindmills 我在本地的kind集群使用上面的curl方法测试是通的
image

@chaosi-zju
Copy link
Member

我想获取两个信息:

  1. path/member.config有几个集群,current-context是不是你预期的集群
  2. 直接执行 kubectl --kubeconfig=path/member.config get po -A 能不能正常访问你期望的dev集群

@donkeywon
Copy link
Author

@chaosi-zju

  1. 测试环境的两个集群(host和dev(作为member))都是在不同的机器上部署的,所以任意一个$HOME/.kube/config里只有一个context
  2. path/member.config是我在join的时候把dev集群的config拷贝到了host集群机器目录里然后执行的join,path/member.config也就是dev集群的config
  3. 在host集群机器上使用dev集群的config,也就是path/member.config,执行kubectl --kubeconfig=path/member.config可以直接get到dev集群的pods和其他resource

@whitewindmills
Copy link
Member

@donkeywon 你参考下。

  • 首先确认karmada-dev这个sa是否还在dev集群存在,不存在则是这个原因。
  • 排除第一条,你需要进一步查看apiserver是否被重装过导致token失效,你可以查看apiserver的AGE,如果是deploy部署则查看deploy,如果是静态pod,则直接查看pod,如果没有被删除过的话,apiserver的AGE应该是大于等于secret的AGE。根据以往的经验,大部分是这种情况。
  • 排除上述情况,你需要查看kube-controller-manager的日志,关注tokens_controller

@donkeywon
Copy link
Author

@whitewindmills

  1. 看了下sa正常存在
  2. apiserver是以systemd直接部署在机器上的,一直正常运行没有重新部署过,启动时长远大于secret的AGE
  3. kube-controller-manager的日志里没有关于token相关的日志

@donkeywon
Copy link
Author

@whitewindmills 看了下可能是我们测试环境的部署参数有点问题,看到个issue是这么说的kubernetes/kubernetes#72026 (comment)

应该是证书没对应上,等下改了试试看
image
image

@whitewindmills
Copy link
Member

是的,--service-account-private-key-file 应该为 xxxx/ssl/sa.key,关闭这个问题因为它与Karmada没有关系。如果你后续依然发现与Karmada有关系,请在下面留言并重新打开问题。
/close

@karmada-bot
Copy link
Collaborator

@whitewindmills: Closing this issue.

In response to this:

是的,--service-account-private-key-file 应该为 xxxx/ssl/sa.key,关闭这个问题因为它与Karmada没有关系。如果你后续依然发现与Karmada有关系,请在下面留言并重新打开问题。
/close

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/question Indicates an issue that is a support question.
Projects
None yet
Development

No branches or pull requests

5 participants