标签: kubernetes

Google Container Engine 上带有“kubectl Exposure”的静态 IP 永远处于 <pending> 状态

我正在尝试kubectl expose在 Google Container Engine 上通过带有静态 IP 地址的命令公开 kubernetes“部署” 。

使用临时 IP,一切正常:

kubectl expose deployment my-application \
    --type="LoadBalancer" --port=80 --target-port=8080
Run Code Online (Sandbox Code Playgroud)

我使用kubectl get services并等待几分钟以查看已分配的临时 IP。我在浏览器中输入 IP 并看到应用程序,即一切正常。

但是,当我执行以下操作时:

  1. 使用 gcloud 网络界面创建静态 IP 地址(网络 -> 外部 IP 地址 -> 保留静态 IP 地址)

  2. 使用与上述相同的命令重新创建服务,但使用额外的--load-balancer-ip选项

    kubectl expose deployment my-application \
        --type="LoadBalancer" --port=80 --target-port=8080 \
        --load-balancer-ip='1.2.3.4'   # IP as assigned by web interface above
    
    Run Code Online (Sandbox Code Playgroud)

命令成功,但在该 IP 地址下无法访问应用程序,当我使用以下命令时:

$ kubectl get services
NAME         CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
endpoints    10.119.247.39   <pending> …
Run Code Online (Sandbox Code Playgroud)

kubernetes gcloud

8
推荐指数
1
解决办法
4445
查看次数

从 Docker 容器到 Google Kubernetes

这个有点理论性,但请耐心等待。

目前我有一个服务器运行几个 Docker 容器(4 个或 5 个,取决于日期和时间)。我计划添加另一个,就像第一个一样,甚至可能是第三个。

现在,我的问题是:我应该管理 15 个容器而不是 5 个,使用 Google Kubernetes 有什么好处吗?

此外,是否有“官方”或至少“确定性”的工作流程可以从 Docker 容器迁移到 Kubernetes 的本机单元“pods”。在你问之前,我确实知道 pod 是由容器组成的(有时甚至是一个)。我的主要问题是“dockerfiles”与 pod 配置完全不同。

有任何想法吗?

docker kubernetes

7
推荐指数
1
解决办法
1135
查看次数

Kubernetes pod 可以跨节点吗?

文档说...

Pod(如鲸鱼或豌豆荚)是一组一个或多个容器(例如 Docker 容器)、这些容器的共享存储以及有关如何运行容器的选项。Pod 始终位于同一地点和共同调度,并在共享上下文中运行。Pod 模拟特定于应用程序的“逻辑主机”——它包含一个或多个相对紧密耦合的应用程序容器——在预容器世界中,它们将在相同的物理或虚拟机上执行。

但我不确定“共址”是否意味着在同一个 P?o?d 上?节点。当卫星位于同一地点时,它们“非常接近,因此对于地面上的接收设备,它们‘似乎’占据一个单一的轨道位置。” 所以,这可能在同一个集群上,而不是在同一个节点上。

在发布此内容时,我可以在此问题上找到的唯一信息是https://platform9.com/blog/compare-kubernetes-vs-ecs/那里说...

单个 Pod 中的容器保证在单个 Kubernetes 节点上运行。

现在这听起来很确定,但我无法在任何地方得到任何证实。我想确保它们是正确的,而不仅仅是误解和传播错误信息。

我问的原因是,如果这是真的,Kubernetes 似乎本质上是浪费的。几乎可以肯定,部署了 Pod 的节点将剩余资源。您可能会拥有一个 Pod,它的需求可以通过这些剩余资源的组合来满足。但是,如果一个 Pod 不能跨越多个节点,您将不得不创建一个新节点并拥有更多未利用的资源。

kubernetes

7
推荐指数
1
解决办法
3901
查看次数

kubernetes 中的 WEBRTC MCU/SFU - 端口范围?

我使用janus-gateway作为用于群组视频通话的 webrtc 媒体服务器。以前我使用 docker-compose 将它部署在单个节点中,但现在我希望能够水平扩展它。为此,我正在尝试使用 kubernetes,但我面临两个问题:

1:指定要为媒体服务器公开的端口范围。由于媒体服务器需要一个端口范围才能运行,我可以在 docker-compose 中使用以下代码进行操作

janus-gateway:
 build: ./gateway
 image: janus-gateway-image
 restart: always
 ports:
   -  8088:8088
   -  8188:8188
   -  7088:7088
   -  "10000-10200:10000-10200/udp"
 networks:
  - back-tier
Run Code Online (Sandbox Code Playgroud)

但是我无法在 kubernetes 中找到任何替代方案。如何使用 kubernetes 公开端口范围。

2:如何从我的 nodejs 应用程序连接到网关的特定实例。所以假设网关的两个实例正在运行,现在当用户连接到应用程序时,我将它连接到正在运行的两个实例之一并将其保存在 redis 中,并确保来自该用户的任何请求都传递到该特定实例. 如何从节点连接到特定副本?还获取副本列表?

我已经在 kuebernetes 上检查过这个问题,但它仍然没有解决。有什么解决方法吗?

docker kubernetes docker-compose webrtc docker-swarm

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

如何在原始网络上为 docker 容器提供自己的可路由 IP?

主要问题

想象一下这个场景。

  • 192.168.0.0/24的网络。
  • 主机名为“Docker-Host”的计算机正在 192.168.0.2 运行 docker 引擎
  • 'Docker-Host' 运行 sshd 服务器
  • 在 'Docker-Host' 上,我在使用 ssh:22 和 https:443 (GitLab) 的容器中运行应用程序

我如何为这个容器分配 192.168.0.3 的 IP?

我需要服务在他们设计的默认端口上运行。


附加信息

我不能使用反向代理作为解决方案,因为这并不能解决如何通过 SSH 与 GitLab 实例通信的问题。

在这种情况下,将端口 22 映射到主机上的不同端口是不专业的,我的客户端开发人员不会喜欢这种设置。

如果我正在启动此应用程序的许多实例,这也将很难维护。并且必须为每个容器将每个 SSH 映射到主机上的新端口。

我的客户需要能够在没有额外配置客户端的情况下解析和运行以下内容。

https://GitLab.internal.net.work

ssh git 克隆https://GitLab.internal.net.work

我已经查看了 Docker 网络文档,除非我弄错了,否则我看不到一个易于维护的解决方案(尽管我还是 Docker 的新手)。

如何才能做到这一点?在这种情况下,其他人在做什么作为“最佳实践”?(如果可能,请以 docker-compose 语法的形式给出答案)。

ssh containers docker kubernetes docker-compose

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

Google Kubernetes Engine 节点池不会从 0 个节点自动扩展

我正在尝试在 GKE 上运行机器学习作业,并且需要使用 GPU。

我使用 Tesla K80 创建了一个节点池,如本演练中所述

我将最小节点大小设置为 0,并希望自动缩放器会根据我的工作自动确定我需要多少个节点:

gcloud container node-pools create [POOL_NAME] \
--accelerator type=nvidia-tesla-k80,count=1 --zone [COMPUTE_ZONE] \
--cluster [CLUSTER_NAME] --num-nodes 3 --min-nodes 0 --max-nodes 5 \
--enable-autoscaling
Run Code Online (Sandbox Code Playgroud)

最初,没有需要 GPU 的作业,因此集群自动缩放器正确地将节点池缩小到 0。

但是,当我使用以下规范创建作业时

resources:
  requests:
    nvidia.com/gpu: "1"
  limits:
    nvidia.com/gpu: "1"
Run Code Online (Sandbox Code Playgroud)

这是完整的作业配置。(请注意,此配置是部分自动生成的。我还删除了一些与问题无关的环境变量)。

Insufficient nvidia.com/gpu我手动将节点池增加到至少 1 个节点之前,Pod一直处于挂起状态。

这是 GPU 节点池的当前限制,还是我忽略了什么?

graphics-processing-unit kubernetes google-kubernetes-engine nvidia

7
推荐指数
1
解决办法
3325
查看次数

是否可以更改emptyDir 卷的位置?

我的 kubernetes 集群的节点都有小的根分区。是否可以将 k8s 配置为使用 emptyDir 卷的备用位置?

kubernetes

7
推荐指数
1
解决办法
3164
查看次数

其他工作的 kubernetes 入口/服务上的 ERR_SSL_PROTOCOL_ERROR

我有一个基本的 nginx 部署和一个由 let's 通过 cert-manager 加密颁发的现有证书。我以为一切都已准备就绪,可以开始使用证书,但我无法连接 https。

连接到 LoadBalancer IP 和域可以正常工作。使用 https 连接域无法连接。Chrome 这么说ERR_SSL_PROTOCOL_ERROR,Firefox 这么说SSL_ERROR_RX_RECORD_TOO_LONG,SSL Labs 这么说Assessment failed: No secure protocols supported。都是同一个问题。

这是服务:

apiVersion: v1
kind: Service
metadata:
  name: nginx
  namespace: example
  labels:
    app: example
spec:
  type: LoadBalancer
  ports:
  - name: http
    protocol: TCP
    port: 80
    targetPort: 80
  - name: https
    protocol: TCP
    port: 443
    targetPort: 80
  selector:
    app: example
Run Code Online (Sandbox Code Playgroud)

这是入口:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: nginx
  namespace: example
  annotations:
    cert-manager.io/cluster-issuer: letsencrypt-production …
Run Code Online (Sandbox Code Playgroud)

ssl kubernetes google-kubernetes-engine ingress

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

我可以运行单节点 K3S 集群吗?

我知道运行单节点集群的后果和问题。不过,我仍然很好奇这是否可能。我打算自己把一切都安排好。

换句话说,我可以在同一台物理机上运行控制平面和工作节点吗?

kubernetes k3s

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

kubectl get nodes 错误:您必须登录到服务器(未经授权) - 如何修复

基础设施没有变化如果我执行任何 kubectl 命令,即:

kubectl get nodes
Run Code Online (Sandbox Code Playgroud)

我有错误

You must be logged in to the server (Unauthorized) 
Run Code Online (Sandbox Code Playgroud)

而且我有工作的 kubernetes 集群并且没有对其进行任何更改......任何想法如何调试它?kubectl 没有 -vv od 调试标志来提供更多信息。

如果我尝试

kubectl version

Client Version: version.Info{Major:"1", Minor:"17", GitVersion:"v1.17.0",
(...) 
error: You must be logged in to the server (the server has asked for the client to provide credentials)
Run Code Online (Sandbox Code Playgroud)

kubernetes

7
推荐指数
5
解决办法
2万
查看次数