标签: kubernetes-deployment

无法删除kubernetes中的Pod

我尝试使用kubernetes安装dgraph(单个服务器)。现在我需要删除的是已创建的Pod。我使用kubectl delete pod pod-name删除了它,结果显示“ pod delete”,但是pod又重新创建了自己,并继续复制。我需要从Kubernetes中取出那些豆荚。我现在应该怎么做?

kubernetes kubectl kubernetes-deployment kubernetes-pod

7
推荐指数
3
解决办法
4075
查看次数

Kubernetes Persistent Volume Claim 安装了错误的 gid

我正在创建一个 Kubernetes PVC 和一个使用它的 Deploy。

在 yaml 中指定 uid 和 gid 必须为 1000。

但是在部署时,卷安装了不同的 ID,所以我没有写访问权限。

如何有效地为 PVC 指定 uid 和 gid?

PVC纱线:

---

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: jmdlcbdata
  annotations:
    pv.beta.kubernetes.io/gid: "1000"
    volume.beta.kubernetes.io/mount-options: "uid=1000,gid=1000"
    volume.beta.kubernetes.io/storage-class: default
spec:
  accessModes:
    - "ReadWriteOnce"
  resources:
    requests:
      storage: "2Gi"
  storageClassName: "default"
Run Code Online (Sandbox Code Playgroud)

部署yaml:

---

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  creationTimestamp: null
  name: jmdlcbempty
  namespace: default
spec:
  replicas: 1
  strategy:
    type: Recreate
  template:
    metadata:
      creationTimestamp: null
      labels:
        name: jmdlcbempty
    spec:
      securityContext:
        runAsUser: 1000
        fsGroup: 1000
      volumes: …
Run Code Online (Sandbox Code Playgroud)

kubernetes kubernetes-pvc ibm-cloud kubernetes-deployment

6
推荐指数
2
解决办法
8058
查看次数

如何在kubernetes中设置部署副本的不同环境变量

现在通过将 Deployment 的副本设置为 4,我有 4 个 k8s pod。

apiVersion: v1
kind: Deployment
metadata:
  ...
spec:
  ...
  replicas: 4
...
Run Code Online (Sandbox Code Playgroud)

POD将获取数据库中的项目并使用它,数据库中的项目有一个列class_name

现在我想要一个 Pod 只能获取一个class_name项目。例如pod1仅获取class_name等于的项目class_name_1,并且pod2仅获取class_name等于class_name_2...的项目

所以我想将不同的class_name环境变量传递给不同的部署 POD。可以在Deployment的yaml文件中定义吗?

或者还有其他方法可以实现我的目标吗?(比如除了 k8s 中的部署之外的其他方法)

deployment environment-variables kubernetes kubernetes-deployment

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

在 kubernetes 部署中设置 securityContext

我在部署中使用了 nfs 挂载卷。我需要给它 fsGroup 如下所示:

securityContext:
  runAsUser: 1000
  runAsGroup: 3000
  fsGroup: 2000
Run Code Online (Sandbox Code Playgroud)

有没有办法在部署清单上做到这一点?正如我在文档中看到的,我只能在 pod yaml 中设置安全上下文。

kubernetes kubernetes-security kubernetes-deployment kubernetes-pod

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

kubectl 流失和滚动更新,停机时间

是否kubectl drain首先确保replicas=1其他节点上的Pod是健康的?
假设 pod 由部署控制,并且确实可以将 pod 移动到其他节点。目前,我认为它只从节点中驱逐(删除 pod),而不先调度它们。

kubernetes kubectl kubernetes-deployment

6
推荐指数
2
解决办法
5460
查看次数

如何使用 pvc 和 initContainer 对部署执行 helm 更新?

我对 helm 和 kubernetes 相当陌生,所以我不确定这是一个错误还是我做错了什么。然而,在发帖之前,我到处寻找答案,但找不到任何可以回答我的问题的内容。

我有一个使用持久卷和初始化容器的部署。我传递它的值是为了让 helm 知道 init 容器的映像是否已更改,或者主应用程序容器是否已更改。

可能相关,但可能不相关:我需要为一系列 Web 源(我称之为收集器)部署一个部署。我不知道最后一部分是否相关,但如果我这样做,我可能就不会在这里了。

当我跑步时

helm upgrade --install my-release helm_chart/ --values values.yaml --set init_image_tag=$INIT_IMAGE_TAG --set image_tag=$IMAGE_TAG

第一次一切正常。但是,当我第二次运行它时,INIT_IMAGE_TAG相同,但IMAGE_TAG发生了变化

  • a) 它尝试重新初始化 pod
  • b) 无法重新初始化 pod,因为它无法挂载卷

预期行为:

  • a) 不要重新初始化 pod,因为 init 容器没有改变
  • b) 安装卷

我的values.yaml只包含一个名为的列表collectors

我的模板只是:

{{ $env := .Release.Namespace }}
{{ $image_tag := .Values.image_tag }}
{{ $init_image_tag := .Values.init_image_tag }}
{{- range $colname := .Values.collectors }}


apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: {{ $colname }}-claim
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: ebs-sc
  resources: …
Run Code Online (Sandbox Code Playgroud)

kubernetes-helm kubernetes-pvc kubernetes-deployment

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

重新触发时,helm 回滚无法识别失败的部署

我有一个像下面这样的场景,有两个版本 - Release-A 和 Release-B。

目前,我在 Release-A 上,需要将所有微服务升级到 Release-B。我尝试使用以下命令执行微服务的掌舵升级 - “mymicroservice”以交付 Release-B。

helm --kubeconfig /home/config upgrade --namespace testing --install --wait mymicroservice mymicroservice-release-b.tgz
Run Code Online (Sandbox Code Playgroud)

由于某些问题,部署对象无法安装并进入错误状态。

观察到这一点,我执行以下回滚命令。

helm --kubeconfig /home/config --namespace testing rollback mymicroservice
Run Code Online (Sandbox Code Playgroud)

由于某些问题(可能是间歇性系统故障或用户行为),Release-A 的部署对象也进入了 failed/Crashloopbackoff 状态。虽然这会导致 helm 回滚成功,但部署对象仍然没有进入运行状态。

一旦我进行了必要的更正,我将重试回滚。由于部署规范已经使用 helm 进行了更新,因此即使处于失败状态,它也不会尝试重新安装部署对象。

Helm 是否有任何选项可以处理上述情况?

尝试使用--force标志,但在使用 --force 标志方法时,还有其他与微服务中的服务对象替换相关的错误。

Rollback "mymicroservice -monitoring" failed: failed to replace object: Service "mymicroservice-monitoring" is invalid: spec.clusterIP: Invalid value: "": field is immutable
Run Code Online (Sandbox Code Playgroud)

kubernetes microservices kubernetes-helm kubernetes-deployment kubernetes-pod

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

删除 Kubernetes 集群不应删除持久化磁盘

我使用带有持久性磁盘 (pd-ssd) 的 terraform 创建了一个 kubernetes 集群。我还创建了存储类和持久性卷声明。

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: pvc-claim
      labels:
        app: elasticsearch
    spec:
      storageClassName: ssd
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 30G
    ---
    kind: StorageClass
    apiVersion: storage.k8s.io/v1
    metadata:
      name: ssd
    provisioner: kubernetes.io/gce-pd
    parameters:
      type: pd-ssd
    reclaimPolicy: Retain
---
apiVersion: v1
kind: Service
metadata:
  name: elasticsearch
  labels:
    name: elasticsearch
spec:
  type: NodePort
  ports:
    - name: elasticsearch-port1
      port: 9200
      protocol: TCP
      targetPort: 9200
    - name: elasticsearch-port2
      port: 9300
      protocol: TCP
      targetPort: 9300
  selector:
    app: elasticsearch
    tier: elasticsearch …
Run Code Online (Sandbox Code Playgroud)

google-cloud-platform kubernetes kubernetes-deployment

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

Helm V3-找不到正式的仓库

我一直在尝试使用头盔版本3安装Nginx Ingress

helm install my-ingress stable/nginx-ingress
Run Code Online (Sandbox Code Playgroud)

但是Helm似乎无法找到它的官方stable仓库。它给出了消息:

错误:无法下载“ stable / nginx-ingress”(提示:运行helm repo update可能会有所帮助)


我试过了helm repo update。但这没有帮助。

我尝试列出存储库,helm repo list但是它是空的。


我试图添加稳定的仓库:

helm repo add stable https://github.com/helm/charts/tree/master/stable
Run Code Online (Sandbox Code Playgroud)

但是它失败了:

错误:看起来“ https://github.com/helm/charts/tree/master/stable ”不是有效的图表存储库或无法访问:无法获取 https://github.com/helm/charts/tree /master/stable/index.yaml:找不到404

kubernetes kubernetes-helm kubernetes-deployment

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

指定了 startupProbe 和 initialDelaySeconds 的 K8S Pod 等待太长时间才能变为就绪

我一直在尝试调试 K8S 部署中的一个非常奇怪的延迟。我已经追踪到下面的简单复制。看起来是,如果我在启动探测器上设置了一个 initialDelaySeconds 或将其保留为 0 并且有一次失败,那么探测器在一段时间内不会再次运行,并以至少 1-1.5 分钟的延迟进入就绪状态:真状态。

我在本地使用 Ubutunu 18.04 和 microk8s v1.19.3 运行以下版本:

  • kubelet:v1.19.3-34+a56971609ff35a
  • kube 代理:v1.19.3-34+a56971609ff35a
  • 容器d://1.3.7
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: microbot
  name: microbot
spec:
  replicas: 1
  selector:
    matchLabels:
      app: microbot
  strategy: {}
  template:
    metadata:
      labels:
        app: microbot
    spec:
      containers:
      - image: cdkbot/microbot-amd64
        name: microbot
        command: ["/bin/sh"]
        args: ["-c", "sleep 3; /start_nginx.sh"]
        #args: ["-c", "/start_nginx.sh"]
        ports:
        - containerPort: 80
        startupProbe:
          httpGet:
            path: /
            port: 80
          initialDelaySeconds: 0  # 5 also has same issue
          periodSeconds: …
Run Code Online (Sandbox Code Playgroud)

kubernetes kubernetes-deployment kubernetes-pod microk8s

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