我尝试使用kubernetes安装dgraph(单个服务器)。现在我需要删除的是已创建的Pod。我使用kubectl delete pod pod-name删除了它,结果显示“ pod delete”,但是pod又重新创建了自己,并继续复制。我需要从Kubernetes中取出那些豆荚。我现在应该怎么做?
我正在创建一个 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) 现在通过将 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
我在部署中使用了 nfs 挂载卷。我需要给它 fsGroup 如下所示:
securityContext:
runAsUser: 1000
runAsGroup: 3000
fsGroup: 2000
Run Code Online (Sandbox Code Playgroud)
有没有办法在部署清单上做到这一点?正如我在文档中看到的,我只能在 pod yaml 中设置安全上下文。
kubernetes kubernetes-security kubernetes-deployment kubernetes-pod
是否kubectl drain首先确保replicas=1其他节点上的Pod是健康的?
假设 pod 由部署控制,并且确实可以将 pod 移动到其他节点。目前,我认为它只从节点中驱逐(删除 pod),而不先调度它们。
我对 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发生了变化
预期行为:
我的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) 我有一个像下面这样的场景,有两个版本 - 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
我使用带有持久性磁盘 (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) 我一直在尝试使用头盔版本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
我一直在尝试调试 K8S 部署中的一个非常奇怪的延迟。我已经追踪到下面的简单复制。看起来是,如果我在启动探测器上设置了一个 initialDelaySeconds 或将其保留为 0 并且有一次失败,那么探测器在一段时间内不会再次运行,并以至少 1-1.5 分钟的延迟进入就绪状态:真状态。
我在本地使用 Ubutunu 18.04 和 microk8s v1.19.3 运行以下版本:
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)