标签: kubernetes-service

Kubernetes中的ClusterIP,NodePort和LoadBalancer服务类型有什么区别?

1 - 我正在阅读文档,我对措辞有点困惑.它说:

ClusterIP:在集群内部IP上公开服务.选择此值使服务只能从群集中访问.这是默认的ServiceType

NodePort:在静态端口(NodePort)上的每个Node的IP上公开服务.将自动创建NodePort服务将路由到的ClusterIP服务.您可以通过请求从群集外部联系NodePort服务<NodeIP>:<NodePort>.

LoadBalancer:使用云提供商的负载均衡器在外部公开服务.将自动创建外部负载均衡器将路由到的NodePort和ClusterIP服务.

NodePort服务类型是否仍然使用ClusterIP但只是在一个不同的端口,该端口对外部客户端开放?所以在这种情况下是<NodeIP>:<NodePort>一样的<ClusterIP>:<NodePort>吗?

或者NodeIP实际上是运行时找到的IP kubectl get nodes而不是用于ClusterIP服务类型的虚拟IP?

2 - 同样在以下链接的图表中:

http://kubernetes.io/images/docs/services-iptables-overview.svg

有什么特别的原因Client是里面的Node?我认为Cluster在ClusterIP服务类型的情况下它需要在a里面.

如果为NodePort绘制了相同的图表,那么将客户端完全绘制在两者之外是否有效Node,Cluster或者我是否完全忽略了这一点?

containers kubernetes kubernetes-service

174
推荐指数
9
解决办法
7万
查看次数

多个app节点如何在kubernetes中公开jmx?

  1. kubernetes我可以公开服务service.这可以.
  2. 假设我有1个Web实例和10个java服务器实例.
  3. 我有一个Windows网关,我用它通过安装在它上面的jconsole访问这10个java服务器实例.
  4. 显然我没有通过kubernetes服务公开所有应用程序jmx端口.

我有什么选择?我应该如何允许这个外部的kubernetes集群windows网关访问那些10个服务器的jmx端口?有什么做法吗?

docker kubernetes kubernetes-service

29
推荐指数
1
解决办法
9831
查看次数

如何在 kubernetes 中找到服务的 url?

我的本地 docker 桌面上有一个本地 kubernetes 集群。

这是我的 kubernetes 服务在我执行以下操作时的样子 kubectl describe service

Name:              helloworldsvc
Namespace:         test
Labels:            app=helloworldsvc
Annotations:       kubectl.kubernetes.io/last-applied-configuration:
                     {"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"labels":{"app":"helloworldsvc"},"name":"helloworldsvc","namespace":"test...
Selector:          app=helloworldapp
Type:              ClusterIP
IP:                10.108.182.240
Port:              http  9111/TCP
TargetPort:        80/TCP
Endpoints:         10.1.0.28:80
Session Affinity:  None
Events:            <none>
Run Code Online (Sandbox Code Playgroud)

此服务指向具有 Web 应用程序的部署。

我的问题是如何找到此服务的网址?我已经尝试过 http://localhost:9111/ 并且没有用。

我确认此服务指向的 pod 已启动并正在运行。

kubernetes kubernetes-service

23
推荐指数
5
解决办法
3万
查看次数

为什么 dig 不能通过 dns 名称解析 K8s 服务,而 nslookup 却没有问题?

以下是重现步骤:

minikube start
kubectl run nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=ClusterIP

kubectl run -i --tty --rm alpine --image=alpine --restart=Never -- sh
apk add --no-cache bind-tools
Run Code Online (Sandbox Code Playgroud)

现在让我们尝试查询 kibe-dns 的nginx服务

nslookup

/ # nslookup nginx.default 10.96.0.10
Server:     10.96.0.10
Address:    10.96.0.10#53

Name:   nginx.default.svc.cluster.local
Address: 10.97.239.175
Run Code Online (Sandbox Code Playgroud)

dig

dig nginx.default @10.96.0.10 any

; <<>> DiG 9.11.3 <<>> nginx.default @10.96.0.10 any
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46414
;; flags: …
Run Code Online (Sandbox Code Playgroud)

nslookup dig kubernetes kube-dns kubernetes-service

14
推荐指数
2
解决办法
3114
查看次数

如何对 Kubernetes 服务的请求使用会话亲和性?

我找不到指定当附属部署使用多个副本扩展时 Kubernetes 服务行为方式的文档。

我假设有某种负载平衡。是否与服务类型有关?

此外,我希望在服务转发的请求中具有某种关联性(即,如果可能,所有具有特定后缀的请求应始终映射到同一个 pod,等等)。这是可以实现的吗?我见过的关闭是Ambassador,但这是服务级别的亲和力,而不是 pod 级别。

load-balancing kubernetes session-affinity kubernetes-ingress kubernetes-service

13
推荐指数
1
解决办法
1万
查看次数

是否可以让 Ingress 指向另一个命名空间中的服务?

我想要做的是在default命名空间中拥有一个服务,并在其他命名空间中拥有指向该服务的入口。我尝试实现如下所示的服务和 Ingress,但没有成功。

kind: Service
apiVersion: v1
metadata:
  name: serviceX
  namespace: default
spec:
  type: ExternalName
  externalName: serviceX.default.svc.cluster.local
ports:
- port: 123


kind: Ingress
apiVersion: extensions/v1beta1
metadata:
  name: web-ingress-test-vpndev
  namespace: my-namespace
spec:
  tls:
  - hosts:
    - abc.my-namespace.domain.com
    secretName: tls-secret-my-namespace
  rules:
  - http:
      paths:
      - path: "/"
        backend:
          serviceName: serviceX
          servicePort: 123
status:
  loadBalancer:
    ingress: {}
Run Code Online (Sandbox Code Playgroud)

我知道我可以在每个命名空间中实现该服务,但我想知道是否可以拥有单个服务。如果我尝试externalName在入口的处理程序中输入服务的名称backend->serviceName,则会收到错误消息,指出服务的名称只能包含数字、字母和“-”。

kubernetes kubernetes-ingress kubernetes-service

12
推荐指数
2
解决办法
1万
查看次数

Kubernetes 服务未在 Pod 之间均匀分配流量

我正在使用 Kubernetes v1.20.10 裸机安装。它有1个主节点和3个工作节点。该应用程序只是提供 HTTP 请求。

我正在基于 (HPA) Horizo​​ntal Pod Autoscaler 扩展部署,我注意到负载在 Pod 之间分布不均匀。只有第一个 Pod 获得了 95% 的负载,而另一个 Pod 的负载非常低。

我尝试了这里提到的答案,但没有成功:Kubernetes service does not distribution requests Between pods

calico kubernetes kubernetes-ingress kubernetes-service hpa

12
推荐指数
1
解决办法
4316
查看次数

运行 k3s-killall.sh 脚本后如何启动 K3s 服务器

我的 K3s 集群正在运行以下 pod:

kube-system   pod/calico-node-xxxx                          
kube-system   pod/calico-kube-controllers-xxxxxx   
kube-system   pod/metrics-server-xxxxx
kube-system   pod/local-path-provisioner-xxxxx
kube-system   pod/coredns-xxxxx
xyz-system    pod/some-app-xxx
xyz-system    pod/some-app-db-xxx
Run Code Online (Sandbox Code Playgroud)

我想停止所有 K3s pod 并重置 containerd 状态,因此我使用了/usr/local/bin/k3s-killall.shwatch kubectl get all -A脚本,所有 pod 都停止了(至少除了消息之外我看不到任何内容The connection to the server 127.0.0.1:6443 was refused - did you specify the right host or port?

有人可以告诉我如何启动 k3s 服务器,因为现在在触发后kubectl get all -A我收到消息The connection to the server 127.0.0.1:6443 was refused - did you specify the right host or port?

附:

  • 当我运行k3s server …

kubernetes kubernetes-apiserver kubernetes-pod kubernetes-service k3s

11
推荐指数
1
解决办法
2万
查看次数

使用TLS保护Kubernetes服务

我有一个内部应用程序,只有集群IP服务才能将其暴露给集群上的其他应用程序.其他服务通过它的DNS(serviceName-namespace.svc.cluster.local)访问此应用程序.此应用程序处理敏感数据,因此尽管所有通信都在集群内部,但我希望使用TLS来保护与此应用程序的通信.

我的问题是 - 如何在服务上启用TLS?是否存在某些东西或应该在应用程序代码上处理它?此外,是否已经可以在群集上使用可以为其签名的CA .svc.cluster.local

为了澄清,我知道我可以使用入口来达到这个目的.唯一的问题是只保留此服务内部 - 因此只有集群内的服务才能访问它.

谢谢,奥梅尔

ssl kubernetes tls1.2 kubernetes-security kubernetes-service

10
推荐指数
1
解决办法
2732
查看次数

在 Kubernetes 中,为什么 NodePort 的默认端口范围为 30000 - 32767?

我是 Kubernetes 新手。在 Kubernetes 中,为什么仅 NodePort 的默认端口范围为30000 - 32767?即使我们将默认端口范围更改为用户定义的端口范围,为什么只允许2767端口?

请帮助我理解。提前致谢。

kubernetes kubernetes-service service-node-port-range

10
推荐指数
1
解决办法
7096
查看次数