我想访问k8s api资源。我的群集是1node群集。 kube-api服务器正在监听8080和6443端口。 curl localhost:8080 / api / v1内部节点正在工作。如果我点击:8080,它不工作,因为其他服务(尤里卡)正在这个端口上运行。这让我有权访问:6443。为了使api可以访问,有两种方法。
1-为kube-api创建服务,其中一些特定端口将以6443为目标。对于那个ca.crt,需要密钥,令牌等。如何创建和配置这些东西,以便我能够访问api。
2-在waeve中进行更改(编织在k8s设置中可用作服务),以便我的服务器可以访问k8s apis。
任何选项对我都没问题。任何帮助将不胜感激。
答案 0 :(得分:-1)
我的群集是1node群集
those words中的一个并不意味着你的想法。如果你还没有遇到它,你最终会发现尝试在一个节点上运行kubernetes cluster 的所有组件的内存和CPU压力会导致内存耗尽,然后很多一些非常可怕的错误信息会导致无法正常工作。
我可以深深体会到想要从简单开始,但是对于3机群而言,你会比将所有东西都压缩到一台机器上更开心。更不用说只有一台机器不会出现任何网络配置错误的事实,当你认为一切正常时,这可能是一个单独的挫折,然后才能将你的集群扩展到更多节点
其他一些服务(eureka)正在这个端口上运行。
那么,明确说明显而易见的风险:为什么不将这两种服务中的一种移动到彼此独立的端口上?许多群集配置工具(我喜欢kubespray)都有configuration option,允许用户非常轻松地将apiserver使用的不安全端口调整为您选择的端口。它甚至可以是特权端口(即:小于1024),因为docker
作为root
运行,因此--publish
可以使用它喜欢的任何数字:8080
。
如果docker
对两个软件都非常重要,重新定位端口的成本过高,那么请考虑将“eureka”软件绑定到机器的IP并将kubernetes apiserver的不安全端口绑定到127.0.0.1(无论如何,这肯定是意图)。如果“{eureka”也在--publish
中运行,您可以更改其--publish ${the_ip}:8080:8080
以在“左侧”包含IP地址,以非常便宜的方式执行我所说的内容:serviceAccountName
(或随你)。如果它没有使用docker,那么软件仍然很有可能接受“绑定地址”或“绑定主机”,通过它可以输入ip地址,而不是“0.0.0.0”。
1-为kube-api创建服务,其中一些特定端口将以6443为目标。对于那个ca.crt,需要密钥,令牌等。如何创建和配置这些东西,以便我能够访问api。
群集中运行的每个Pod都可以选择声明default
,默认情况下为serviceAccountName
,并且Service
的效果是Pod中的每个容器都有访问您提到的那些组件:CA证书和JWT凭证,使Pod能够调用kubernetes API(从集群内部可以始终通过以下方式访问:kubernetes $KUBERNETES_SERVICE_HOST
IP,环境变量{{1 }或者主机名https://kubernetes
- 假设您使用的是kube-dns)。这些serviceAccount凭据会自动投影到/var/run/secret/kubernetes.io
的容器中,而不要求您的Pod明确声明这些volumeMount
。
因此,如果您担心某个人必须拥有在群集中的凭据,那么这种担忧可能会很快消失。如果您的关注是从群集外部访问,那么有很多方法可以解决这个问题,而这些方法并不直接涉及创建该等式的所有3个部分。