标签: kubernetes-service

Kubernetes - 如何使用 NodePort 服务从集群外部访问 nginx 负载均衡

我有一个带有主节点和其他两个节点的 Kubernetes 集群:

sudo kubectl get nodes
NAME                STATUS    ROLES     AGE       VERSION
kubernetes-master   Ready     master    4h        v1.10.2
kubernetes-node1    Ready     <none>    4h        v1.10.2
kubernetes-node2    Ready     <none>    34m       v1.10.2
Run Code Online (Sandbox Code Playgroud)

它们每个都在 VirtualBox Ubuntu VM 上运行,可以从来宾计算机访问:

kubernetes-master (192.168.56.3)
kubernetes-node1  (192.168.56.4)
kubernetes-node2 (192.168.56.6)
Run Code Online (Sandbox Code Playgroud)

我部署了一个带有两个副本的 nginx 服务器,每个 kubernetes-node-x 有一个 pod:

sudo kubectl get pods -o wide
NAME                                READY     STATUS    RESTARTS   AGE       IP               NODE
nginx-deployment-64ff85b579-5k5zh   1/1       Running   0          8s        192.168.129.71   kubernetes-node1
nginx-deployment-64ff85b579-b9zcz   1/1       Running   0          8s        192.168.22.66    kubernetes-node2
Run Code Online (Sandbox Code Playgroud)

接下来,我将 nginx-deployment 的服务公开为 NodePort,以便从集群外部访问它:

sudo kubectl expose deployment/nginx-deployment --type=NodePort …
Run Code Online (Sandbox Code Playgroud)

virtualbox nginx kubernetes kubernetes-service

3
推荐指数
1
解决办法
3090
查看次数

如何在 kubernetes 中使用单个服务设置对多个节点的访问?

我正在尝试使用单个 Service yaml 设置对多个节点上的 Pod 的访问。Pod 都具有相同的标签(例如label:app),但分布在多个节点上,而不是分布在单个节点上。

据我所知,我可以设置一个 Service 通过 NodePort 转发对 Pod 的访问,例如:

spec:
  type: NodePort
  selector:
    label: app
  ports:
    targetPort: 5000
    nodePort: 30000 

Run Code Online (Sandbox Code Playgroud)

其中,访问节点上的端口 30000 会转发到 pod 上的端口 5000。

如果我在多个节点上有 pod,客户端是否可以访问单个端点(例如服务本身)以循环方式获取任何 pod?或者客户端是否需要使用该节点的 IP 来访问特定节点上的一组 pod,如图所示xx.xx.xx.xx:30000

kubernetes kubernetes-service kubernetes-networking

3
推荐指数
1
解决办法
2378
查看次数

无法从浏览器访问kubernetes NodePort服务

我正在我的AWS EC2上通过Minikube在Kubernetes上进行练习。作为其中的一部分,我创建了部署并通过NodePort服务公开它,然后检查:

curl http://<node-ip>:<service-port>
Run Code Online (Sandbox Code Playgroud)

在 EC2 机器中运行良好。但是当我在浏览器上点击相同的 URL 时,我得到了:

This site can't be reached
Run Code Online (Sandbox Code Playgroud)

谁能帮我解决问题是什么以及如何访问它?

谢谢。

这是我的部署 YAML 文件:


apiVersion: apps/v1
kind: Deployment
metadata:
  name: myfirstdeployment
  labels:
    app: web
spec:
  replicas: 1
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      name: myfirstpod
      labels:
        app: web
    spec:
      containers:
      - name: myfirstpod-1
        image: nginx
        command: ["sleep","3600"]
        ports:
        - containerPort: 80

这是我的服务 YAML 文件


apiVersion: v1
kind: Service
metadata:
  name: myfirstservice
spec:
  selector:
    app: web
  ports: …
Run Code Online (Sandbox Code Playgroud)

kubernetes minikube kubernetes-service

3
推荐指数
1
解决办法
1488
查看次数

kubernetes服务如何决定要路由到哪个后端pod

我有一个Kubernetes服务,通过这样做选择:

spec: 
  selector: 
    backend: nlp-server
Run Code Online (Sandbox Code Playgroud)

如果有多个Pods匹配选择器,那请求PodService路由?

我正在使用默认ClusterIP设置.搜索"ClusterIP:在集群内部IP上公开服务.选择此值使服务只能从集群中访问.这是默认的ServiceType." 在文档中

如果我希望服务路由到有意义的Pod(负载较小),
那么内部负载均衡器是我需要的吗?

kubernetes kubernetes-service

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

仅使用一个端口时需要多个端口名称

我指定了一个端口,如下所示。

我的应用程序服务.yaml

apiVersion: v1
kind: Service
metadata:
  labels:
    app: my-app
  name: my-app-service
  namespace: default
spec:
  externalTrafficPolicy: Cluster
  ports:
    - port: 80
      name: my-port
      protocol: TCP
      targetPort: 8000
  selector:
    app: my-app
  sessionAffinity: None
  type: NodePort

Run Code Online (Sandbox Code Playgroud)

cloudbuild.yaml摘要:

steps:
  - name: gcr.io/cloud-builders/gcloud
  - name: gcr.io/cloud-builders/docker
  - name: gcr.io/cloud-builders/gke-deploy
Run Code Online (Sandbox Code Playgroud)

由于某种原因,当 port1 甚至不存在时,我收到一个错误,要求在 port1 上输入名称参数。见下文。

输出:

Step #3: Applying deployment.
Step #3: Getting access to cluster "my-cluster" in "my-zone".
Step #3: Configuration files to be used: [{kind: Deployment, name: my-app} {kind: HorizontalPodAutoscaler, name: my-app-hpa} {kind: …
Run Code Online (Sandbox Code Playgroud)

kubernetes google-kubernetes-engine kubernetes-service

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

如何从局域网内的其他机器访问服务?

你好,我正在使用 minikube 学习 Kubernetes。我可以在运行 minikube 的机器上通过 minikubeip:NodePort 访问服务,现在我想从其他机器通过 LAN 访问该服务。我尝试过 Ingress 但它对我不起作用。

部署文件:

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: aspnetapp-deployment
  labels:
    app: aspnetapp
spec:
  replicas: 2
  selector:
    matchLabels:
      app: aspnetapp
  template:
    metadata:
      labels:
        app: aspnetapp
    spec:
      containers:
        - name: aspnetapp-cn
          image: localhost:5000/aspnetapp
          ports: 
            - containerPort: 80
Run Code Online (Sandbox Code Playgroud)

服务文件:

---
apiVersion: v1
kind: Service
metadata:
    name: aspnetapp-service
spec:
    type: NodePort
    ports:
    - name: http
      targetport: 80      
      port: 80
      protocol: TCP
    selector:
      app: aspnetapp
Run Code Online (Sandbox Code Playgroud)

入口文件:

---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: …
Run Code Online (Sandbox Code Playgroud)

portforwarding kubernetes minikube kubernetes-ingress kubernetes-service

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

添加/删除 kubernetes 注释的 API 等效项是什么?

我正在尝试找到与如何在 Kubernetes 中删除(删除)注释 等效的 API ,以删除 Python 中服务类型的注释。从命令行执行此操作效果非常好。

最新的kubernetes-client/python没有任何允许修补注释的 API。我总是可以删除并重新创建该服务,但我想修补它。

如果有人愿意的话,这是一个简单的 MCVE。测试服务 YAML

apiVersion: v1
kind: Service
metadata:
  name: my-service
  annotations:
    description: my test service
spec:
  ports:
    - protocol: TCP
      port: 80
      targetPort: 9376
Run Code Online (Sandbox Code Playgroud)

和我正在使用的Python代码

from kubernetes import client, config
from kubernetes.client.rest import ApiException

config.load_kube_config()

coreV1 = client.CoreV1Api()
appsV1 = client.AppsV1Api()

try:
    resp = coreV1.read_namespaced_service("my-service", "default")
    del resp.metadata.annotations["description"]
    patch = coreV1.patch_namespaced_service("my-service", "default", body=resp)
    print(patch)

except ApiException as e:
     print(str(e))
Run Code Online (Sandbox Code Playgroud)

kubernetes kubernetes-python-client kubernetes-service

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

如何获取 kubernets 服务端点级别的请求计数

在我们的 Kubernetes 集群中,我们使用多个内部 Kubernetes 服务端点。这些服务端点被多个客户端服务使用。

我们想检查是否有任何可以获取 kubernets 服务级别指标的请求计数、平均响应时间、状态代码聚合?

kubernetes prometheus kubernetes-service

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

负载均衡器外部IP与K3s集群中节点的内部IP相同

我已经使用以下命令在 k3s 集群中设置了服务:

apiVersion: v1
kind: Service
metadata:
  name: myservice
  namespace: mynamespace
  labels:
    app: myapp
spec:
  type: LoadBalancer
  selector:
    app: myapp
  ports:
  - port: 9012 
    targetPort: 9011 
    protocol: TCP
Run Code Online (Sandbox Code Playgroud)

kubectl get svc -n mynamespace

NAME            TYPE           CLUSTER-IP      EXTERNAL-IP                                PORT(S)          AGE
minio           ClusterIP      None            <none>                                     9011/TCP         42m
minio-service   LoadBalancer   10.32.178.112   192.168.40.74,192.168.40.88,192.168.40.170   9012:32296/TCP   42m
Run Code Online (Sandbox Code Playgroud)

kubectl 描述 svc myservice -n mynamespace

Name:                     myservice
Namespace:                mynamespace
Labels:                   app=myapp
Annotations:              <none>
Selector:                 app=myapp
Type:                     LoadBalancer
IP Family Policy:         SingleStack
IP Families:              IPv4
IP:                       10.32.178.112
IPs: …
Run Code Online (Sandbox Code Playgroud)

yaml kubernetes minio kubernetes-service k3s

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

何时使用 NodePort、ClusterIP、LoadBalancer、Headless 作为 Ingress 后端?

以下示例将向外部公开服务。那么为什么在这种情况下被NodePort/LB允许,这不是多余的吗?

  rules:
  - host: lab.example.com
    http:
      paths:
      - path: /service-root
        backend:
          serviceName: clusterip-svc
          servicePort: 8080
      - path: /service-one
        backend:
          serviceName: nodeport-svc
          servicePort: 8080
      - path: /service-two
        backend:
          serviceName: headless-svc
          servicePort: 8080
Run Code Online (Sandbox Code Playgroud)

NodePort使用、ClusterIPLoadBalancerHeadless作为 Ingress 后端有什么特别的优势吗?

kubernetes kubernetes-service

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