首页 > 其他分享 >经过dnat后访问kube-apiserver证书认证失败

经过dnat后访问kube-apiserver证书认证失败

时间:2024-05-08 23:55:07浏览次数:18  
标签:dnat crt -- apiserver https 10.10 kube

问题现象

iptables -t nat -I OUTPUT -d 10.10.10.10 -p tcp --dport 443 -j DNAT --to-destination 192.168.0.105:6443
# 报错requested domain name does not match the server's certificate,无法通过证书认证。
curl https://10.10.10.10:443/livez --key ./client.key --cert ./client.crt --cacert ./root.crt

问题分析

# 通过cluster ip访问kube-apiserver,https证书认证通过。
curl https://10.96.0.1:443/livez --key ./client.key --cert ./client.crt --cacert ./root.crt

因为kube-apiserver服务端证书中有10.96.0.1这个clusterIP。

openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -text

nodeA(192.168.0.112,增加iptables,走http访问,https因加密而无法看到传输的数据)->nodeB(192.168.0.105,kube-apiserver所在节点)

kube-apiserver所在节点接收到的请求,http请求参数里面HOST还是10.10.10.10:443,没有因为dnat发生转换,所以无法走过https证书认证。

解决问题

kube-apiserver配置token认证,例如通过ServiceAccount,使用kube-controller-manager创建的token。

标签:dnat,crt,--,apiserver,https,10.10,kube
From: https://www.cnblogs.com/WJQ2017/p/18181203

相关文章

  • kube-proxy 流量流转方式
    简介kube-proxy是Kubernetes集群中负责服务发现和负载均衡的组件之一。它是一个网络代理,运行在每个节点上,用于service资源的负载均衡。它有两种模式:iptables和ipvs。iptablesiptables是Linux系统中的一个用户空间实用程序,用于配置内核的网络包过滤和网络地址转换(NA......
  • Kubernetes——K8s基础指令
    1、查看类命令#获取节点和服务版本信息kubectlgetnodes#获取节点和服务版本信息,并查看附加信息kubectlgetnodes-owide#获取pod信息,默认是default名称空间kubectlgetpod#获取pod信息,默认是default名称空间,并查看附加信息如:pod的IP及在哪个节点运行kubectlg......
  • k8s集群搭建--kubeadm方式
    1.搭建集群的硬件条件: 使用3台服务器:一个master,两个node。我们这里的案例是搭建单master集群的方式。具体操作步骤:1.“在所有节点中”执行以下步骤的命令,做一些初始化:  上面的命令,在所有master和node节点中都要全部执行一次!!! 2.在所有节点安装Docker/Kubeadm/k......
  • Kubernetes脚本——检查K8S组件/服务/配置/POD
    #!/bin/bash#echo"运维账号是否有执行常用kubectl运维命令的权限,期望结果:输出/apps/bin/kubelet-----------------------------------------">k8s_check_result.txt#ansible-i./hostsk8s-mshell-a"foriin\`sudo-l\`;doecho\$i|grep-Eikubectl;done"&......
  • Kubernetes脚本——K8s日志检查
    #!/bin/bashecho"docker日志采用建议的syslog收集检查,期望结果:1---------------------------------------------------------------------">log_check_result.txtansible-i./hostsall-mshell-a'sudofind/apps/logs/docker/-namedockerd.log|wc-l'&......
  • Kubernetes脚本——检查K8s基础信息
    #!/bin/sh#version#node,master,slave#arch#kernelversion#dockerversion#image#cpu,memandusage#pod,podlimit#service,nodeport,lb#deploy,statefulset,deamonset#cm,secret#namespaces#set-xecho_left(){if["$2&q......
  • k8s常见安装方式 rancher kubespray kops kubeadm对比
    Kubernetes(K8s)的常见安装方式包括Rancher、Kubespray、kops和kubeadm,它们各自具有不同的特点和适用场景。以下是这四种安装方式的对比:Rancher:Rancher是一个开源的企业级Kubernetes管理平台,它简化了Kubernetes的部署、扩展和管理。通过Rancher,用户可以轻松地在各种基础设施上部......
  • kind部署k8s集群和kube-ovn
    #docker容器作为k8snode,容器里面通过containerd拉起Pod。cat<<EOF|kindcreatecluster--namekube-ovn--config-kind:ClusterapiVersion:kind.x-k8s.io/v1alpha4networking:kubeProxyMode:ipvsdisableDefaultCNI:trueipFamily:ipv4apiServerAddress......
  • kube-ovn中ovn-cni如何访问ovs
    ovs-ovnpod把ovs的db.sock暴露在宿主机上。ovn-cnipod挂载该目录到容器中。ovsdbsocket默认路径就在/run/openvswitch/db.sock。#拷贝ovn-cnipod中ovs-vsctl到pod所在宿主机上kubectlcp-nkube-system-ccni-serverkube-ovn-cni-2hrsn:usr/bin/ovs-vsctlovs-vsc......
  • kube-ovn cni处理流程
    kubelet调用二进制文件/opt/cni/bin/kube-ovn。cmd/cni/cni.go创建和删除分别对应cmdAdd和cmdDel函数。pkg/request/cniserver.go二进制文件/opt/cni/bin/kube-ovn调用本地unixsocket,把cni请求转发给kubeovncnidaemon。pkg/daemon/server.goRunServer函数监听本地unixsock......