c++日志无法查看_Kubernetes 无法查看 pods 日志问题

前言

最近使用二进制部署完 Kubernetes 1.18.2 版本,运行命令 kubectl logs -n kube-system calico-node-mbjnm 时,报下面错误。

606db5a86fb5d89cb5294a32cd869838.png

原因:我们知道 Kubernetes 认证过程分为:认证 --> 授权 --> 准入控制,上面报错就是因为没有通过认证而被拒绝。

认证被拒绝解决方法

错误的解决方法

通过谷歌搜索时,发现很多博客文章使用下面方法来解决上面报错。修改 kubelet.config 配置,添加下面配置,开启匿名访问。问题虽然可以解决,但危害整个集群安全。所以作者不推荐这样操作。

authentication:
  anonymous:
    enabled: true

正确的解决方法

fe3276930838a0d6899ce310ec77c3a6.png

从上图官方文档中我们能得出结论:

  • kube-apiserver 配置需要添加 --kubelet-client-certificate 和 --kubelet-client-key 参数,具体配置如下:

    b7d4a0497ca19ba03239db74ce24185a.png
  • kubelet 配置需要添加 --client-ca-file 参数,并且为了集群安全,需要禁用匿名访问 --anonymous-auth=false,具体配置如下:

    b16e6482c40b9ccbc98407c1bfbd45ae.png

修改完 kube-apiserver 和 kubelet 配置,并重启 kube-apiserver 和 kubelet 服务,再次运行 kubectl logs -n kube-system calico-node-mbjnm 命令查看 Pod 日志,发现又报错了。具体见下图:

6707bf1e87945857d91b05b8d64ef883.png

分析:从上图我们可以知道,Kubernetes 认证已经通过,但到授权时出现问题,因为没有查看 Pods 日志权限。

参考官方链接:https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet-authentication-authorization/

没有授权解决方法

错误的解决方法

将 system:anonymous 绑定到 cluster-admin 角色中并起一个 cluster-system:anonymous 名字。

$ kubectl create clusterrolebinding cluster-system:anonymous --clusterrole=cluster-admin --user=system:anonymous

clusterrolebinding.rbac.authorization.k8s.io/cluster-system:anonymous created

上面的解决方法,会严重危害集群安全,匿名访问拥有超级管理员权限,想想有多可怕。。。

正确的解决方法

注意:作者生成证书时使用 kubernetes 用户

ffba21d5ddd603290d2a19308ab8b0e5.png

解决思路:从报错可以知道,kubernetes 用户 没有查看 Pods 日志权限,我们可以给 kubernetes 用户 绑定一个权限。

Kubernetes 集群默认提供一个 system:kubelet-api-admin 权限。

d382ce31d3be8eb03a0e18d3bf340b2b.png

解决方法:把 kubernetes 用户 绑定到 system:kubelet-api-admin 权限。具体如下操作:

$ vim apiserver-to-kubelet-rbac.yml
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: kubelet-api-admin
subjects:
- kind: User
  name: kubernetes
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: system:kubelet-api-admin
  apiGroup: rbac.authorization.k8s.io
$ kubectl apply -f apiserver-to-kubelet-rbac.yml

再次查看 Pod 日志,能正常输出日志了。

b87d721b1579c3b344cc4d116962e8a4.png

热门文章推荐

  • Gitlab CI/CD 部署应用到 K8S 演示
  • Calico 介绍、原理与使用
  • PromQL 常用命令
  • Docker 镜像分析之 dive
  • 容器化配置生成神器
  • Podman 会取代 Docker 吗?

最后

  • 欢迎您加我微信【ypxiaozhan01】,拉您进技术群,一起交流学习...
  • 欢迎您关注【YP小站】,学习互联网最流行的技术,做个专业的技术人...
34c45b246a0a556eee82f68269fa7f16.png

  【文章让您有收获,点个 在看 支持我吧】
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值