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或者我是否完全忽略了这一点?
kubernetes我可以公开服务service.这可以.我有什么选择?我应该如何允许这个外部的kubernetes集群windows网关访问那些10个服务器的jmx端口?有什么做法吗?
我的本地 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 已启动并正在运行。
以下是重现步骤:
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) 我找不到指定当附属部署使用多个副本扩展时 Kubernetes 服务行为方式的文档。
我假设有某种负载平衡。是否与服务类型有关?
此外,我希望在服务转发的请求中具有某种关联性(即,如果可能,所有具有特定后缀的请求应始终映射到同一个 pod,等等)。这是可以实现的吗?我见过的关闭是Ambassador,但这是服务级别的亲和力,而不是 pod 级别。
load-balancing kubernetes session-affinity kubernetes-ingress kubernetes-service
我想要做的是在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 v1.20.10 裸机安装。它有1个主节点和3个工作节点。该应用程序只是提供 HTTP 请求。
我正在基于 (HPA) Horizontal Pod Autoscaler 扩展部署,我注意到负载在 Pod 之间分布不均匀。只有第一个 Pod 获得了 95% 的负载,而另一个 Pod 的负载非常低。
我尝试了这里提到的答案,但没有成功:Kubernetes service does not distribution requests Between pods
我的 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
我有一个内部应用程序,只有集群IP服务才能将其暴露给集群上的其他应用程序.其他服务通过它的DNS(serviceName-namespace.svc.cluster.local)访问此应用程序.此应用程序处理敏感数据,因此尽管所有通信都在集群内部,但我希望使用TLS来保护与此应用程序的通信.
我的问题是 - 如何在服务上启用TLS?是否存在某些东西或应该在应用程序代码上处理它?此外,是否已经可以在群集上使用可以为其签名的CA .svc.cluster.local?
为了澄清,我知道我可以使用入口来达到这个目的.唯一的问题是只保留此服务内部 - 因此只有集群内的服务才能访问它.
谢谢,奥梅尔
ssl kubernetes tls1.2 kubernetes-security kubernetes-service
我是 Kubernetes 新手。在 Kubernetes 中,为什么仅 NodePort 的默认端口范围为30000 - 32767?即使我们将默认端口范围更改为用户定义的端口范围,为什么只允许2767端口?
请帮助我理解。提前致谢。