小编Arg*_*dhu的帖子

从本地计算机访问 Kubernetes API

我希望从本地计算机访问 Kubernetes API。我正在尝试使用 kubernetes Rest API 获取 pod 列表。

我在Google Cloud上创建了一个 kubernetes 集群和一些 pod 。

在我的本地 Windows 计算机上,我安装了 gcloud sdk 和 kubectl 组件。我使用以下方式连接到我的集群:

gcloud container clusters get-credentials my-cluster --region us-central1 --project my-project
Run Code Online (Sandbox Code Playgroud)

我可以使用以下命令获取 pod 列表kubectl get pods

不过,我想使用 kubernetes Rest API 获取 pod 列表。

GET https://kubernetes.default/api/v1/namespaces/default/pods
Authorization: Bearer my_access_token
Run Code Online (Sandbox Code Playgroud)

但我认为该请求没有得到通过。

在邮递员中,我收到错误:

Error: tunneling socket could not be established, cause=socket hang up

或者在 Python 中使用 requests 库(来自我的本地计算机),我收到错误

HTTPSConnectionPool(host='kubernetes.default', port=443): Max retries exceeded with url: /api/v1/namespaces/default/pods (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection …

google-cloud-platform kubernetes google-kubernetes-engine kubectl

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

kubernetes imagePullPolicy:始终不会自动拉取镜像

我希望每次创建带有标签latestKubernetes 的新映像时都会自动拉取新映像。我添加imagePullPolicy: Always了 pod 规范,但它不会用新图像更新旧图像。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: node
  namespace: dev
  labels:
    app: my-node-app
spec:
  replicas: 2
  selector:
    matchLabels:
      app: my-node-app
  template:
    metadata:
      labels:
        app: my-node-app
    spec:
      hostNetwork: true
      securityContext:
        fsGroup: 1000
      containers:
      - name: node
        imagePullPolicy: Always
        image: gcr.io/my-repo/my-node-app:latest
        ports:
        - containerPort: 3000
        envFrom:
          - configMapRef:
              name: my-configmap
        resources:
          requests:
            cpu: 100m
            memory: 128Mi
          limits:
            cpu: 2
            memory: 8Gi
      restartPolicy: Always
Run Code Online (Sandbox Code Playgroud)

google-cloud-platform kubernetes

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

Kubernetes 修改注解强制更新部署

嘿,我有一个更广泛的问题,因为当我在 kubernetes 中更新秘密时,它们不会在 pod 中实现,除非它们是 ugprades/reschedules 或只是重新部署;我看到了另一篇关于它的 stackoverflow 帖子,但没有一个解决方案适合我更新 kubernetes 的秘密不会更新正在运行的容器环境变量

同样如此,pod 上的 python 脚本的应用程序内解决方案可以自动更新其秘密https://medium.com/analytics-vidhya/updating-secrets-from-a-kubernetes-pod-f3c7df51770d但它似乎是一个远景和我想出了向部署清单添加注释的解决方案 - 并希望每次舵图将新的时间戳放入其中时,它都会重新安排 Pod - 它确实放置了它,但它没有重新安排 - 任何想法如何强制这种行为?

apiVersion: apps/v1
kind: Deployment
metadata:
  name: xxx
  namespace: xxx
  labels: xxx
  annotations:
    lastUpdate: {{ now }}
Run Code Online (Sandbox Code Playgroud)

我也不想将这个补丁命令添加到 ci/cd 部署中,因为它的仲裁和 - 感觉不是正确的解决方案

kubectl patch deployment mydeployment -p '{"spec":{"template":{"spec":{"containers":[{"name":"mycontainer","env":[{"name":"RESTART_","value":"'$(date +%s)'"}]}]}}}}'
Run Code Online (Sandbox Code Playgroud)

没有其他人找到更好的解决方案来在已更改的机密上重新部署 pod 吗?

jenkins kubernetes kubernetes-helm

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

Kubernetes node.kubernetes.io/内存压力:NoSchedule

下午好

我有两个 Pod 由于以下错误而无法提升:

prometheus-k8s-0 0/3 Pending 0 56s
prometheus-k8s-1 2/3 Running 0 69s
Run Code Online (Sandbox Code Playgroud)

Warning FailedScheduling <unknown> default-scheduler 0/4 nodes are available: 1 node (s) had taint {node.kubernetes.io/memory-pressure:}, that the pod didn't tolerate, 3 node (s) had volume node affinity conflict

kubectl describe nodes aks-bbagentpool-39730754-vmss000000 | grep -i taint
Taints: node.kubernetes.io/memory-pressure:NoSchedule
Run Code Online (Sandbox Code Playgroud)

我没有看到任何节点的高消耗:

kubectl top nodes

NAME CPU (cores) CPU% MEMORY (bytes) MEMORY%

aks-bbagentpool-39730754-vmss000000 153m 8% 920Mi 17%
aks-bbagentpool-39730754-vmss000001 1854m 97% 5357Mi 99%
aks-bbinfra-39730754-vmss000000 211m 5% 2038Mi 16%
aks-bbinfra-39730754-vmss000001 111m …
Run Code Online (Sandbox Code Playgroud)

kubernetes azure-aks

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

如何为辅助控制平面节点生成 kubeadm 令牌

当我们启动主主节点时,该节点会使用 ttl 为工作节点和主节点创建令牌。

根据文档kubeadm token(我也测试过并且它有效),我们可以发出命令并获取新令牌(默认为 ttl 24h):

kubeadm token create --print-join-command
Run Code Online (Sandbox Code Playgroud)

我想弄清楚是否要添加新的平面节点(辅助主节点),如何创建相关令牌?

我尝试传递一些标志,例如:

kubeadm token create --print-join-command --control-plane
Run Code Online (Sandbox Code Playgroud)

但它失败了(当然),因为这个标志不被识别。

我还通过文档发现,我们可以通过配置文件的直接链接来实现,例如 ref kubeadm-join/file 或基于 https 的发现

kubeadm join --discovery-file path/to/file.conf # (local file)
kubeadm join --discovery-file https://url/file.conf # (remote HTTPS URL)
Run Code Online (Sandbox Code Playgroud)

就我而言,我没有本地 conf 文件或计划使用 url 链接。

有没有其他方法可以使用平面节点而不是工作节点的命令来创建新令牌?

token kubernetes kubectl

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

在具有多个容器的 pod 中登录到 Kubernetes 容器

我可以按照以下指南登录到单个容器 pod

https://kubernetes.io/docs/tasks/debug-application-cluster/get-shell-running-container/

kubectl exec --stdin --tty $POD_API -- /bin/bash
Run Code Online (Sandbox Code Playgroud)

其中 $POD_API=api-79c8g4948d-24vth [或任何 kubernetes 分配给它的]

但是,我有一个带有 2 个容器的 pod [一个是 cloudsql 代理,另一个是 api]。

如何登录我的 api 容器?我的 api 容器名为:api,而 cloudsql 代理名为 cloudsql-proxy。

kubernetes google-kubernetes-engine

0
推荐指数
1
解决办法
79
查看次数

如何使用“controller.nodeSelector”选项将 nginx-ingress 控制器部署到 kubernetes 主节点?

我只需要使用 Helm 图表“ingress-nginx”将 nginx-ingress 控制器部署到 kubernetes 主节点。它提供了一个选项“controller.nodeSelector”来选择要部署的 k8s 节点。所以我想使用此选项来选择带有 label 的 k8s 主节点node-role.kubernetes.io/master=,但尝试了不同的格式,无法让它按预期工作。

失败案例:

helm install --set controller.hostNetwork=true --set controller.hostPort.enabled=true --set controller.extraArgs.enable-ssl-passthrough="" --set controller.replicaCount=1 --set controller.nodeSelector."node-role\.kubernetes\.io/master"="" --namespace rwe ingress-nginx ingress-nginx/ingress-nginx
Run Code Online (Sandbox Code Playgroud)

您能帮忙建议如何让这个选项生效吗?谢谢。

nginx kubernetes nginx-ingress

0
推荐指数
1
解决办法
2649
查看次数

如何使用 Java API 在 Kubernetes 中创建作业

能够使用 CLI 在 Kubernetes 集群中创建作业 ( https://kubernetesbyexample.com/jobs/ )

有没有办法使用 Java API 在集群内创建作业?

kubernetes kubectl azure-aks

0
推荐指数
1
解决办法
6221
查看次数

使用 asyncio/aiohttp 返回 404 响应时遇到问题

import time
import asyncio
import aiohttp

async def is_name_available(s, name):
    async with s.get("https://twitter.com/%s" % name) as res:
        if res.raise_for_status == 404:
            print('%s is available!' % name)
            return name

async def check_all_names(names):
    async with aiohttp.ClientSession(raise_for_status=True) as s:
        tasks = []
        for name in names:
            task = asyncio.create_task(is_name_available(s, name))
            tasks.append(task)
        return await asyncio.gather(*tasks)

def main():    
    with open('names.txt') as in_file, open('available.txt', 'w') as out_file:        
        names = [name.strip() for name in in_file]
        start_time = time.time()
        results = asyncio.get_event_loop().run_until_complete(check_all_names(names))
        results = [i for i in …
Run Code Online (Sandbox Code Playgroud)

python-3.x python-asyncio aiohttp

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