helm部署的Kubernetes服务是否可以配置为通过kubectl手动删除时重启?
Can Kubernetes services deployed by helm configured to be restarted when manually deleting via kubectl?
我试图了解 helm 部署的一般性质。我有一个由 helm 管理的部署,它使用 service.yaml 文件启动了 jdbc 服务。
部署后,根据 service.yaml 文件,我可以清楚地看到该服务处于活动状态。
如果我手动删除服务,服务就死了。
我的问题是:如果我使用 kubectl delete 手动删除服务,是否应该重新启动该服务,因为部署是 helm 管理的?
即使在手动删除时,是否有任何选项可以配置服务重启?
这是默认和预期的行为吗?
我尝试了很多选项并搜索了文档,但我无法找到导致服务在删除时重新启动的 spec/option/config,这与 pods 不同,'Always Restart' ]选项。
apiVersion: v1
kind: Service
metadata:
name: {{ .Values.exampleJDBCService.name }}
namespace: {{ .Release.Namespace }}
spec:
type: {{ .Values.exampleJDBCService.type }}
sessionAffinity: "{{ .Values.sessionAffinity.type }}"
{{- if (eq .Values.sessionAffinity.type "ClientIP") }}
sessionAffinityConfig:
clientIP:
timeoutSeconds: {{ .Values.sessionAffinity.timeoutSeconds }}
{{- end }}
selector:
{{ template "spark-example.fullname" . }}: "true"
ports:
- protocol: TCP
port: {{ .Values.exampleJDBCService.clusterNodePort }}
targetPort: {{ .Values.exampleJDBCService.targetPort }}
{{- if (and (eq .Values.exampleJDBCService.type "NodePort") (not (empty .Values.exampleJDBCService.clusterNodePort))) }}
nodePort: {{ .Values.exampleJDBCService.clusterNodePort }}
{{- end }}
你有点混搭。
您在 pod 上定义的 RestartAlways
配置它总是在完成或失败时重新启动。
您看到 pod 在删除时重新创建的原因是它有一个创建它的部署对象,并且它希望始终具有所需的 pods 数量。
Helm 不与集群中对象的删除交互,一旦他创建了他的对象,他就不再与它们交互,直到下一个 helm 命令。
希望它能帮助您更好地理解术语。
Deleted/corrupted Kubernetes 资源对象(在您的情况下是服务)不能由 tiller 自动 "restarted",但幸运的是可以使用以下 helm 命令恢复到所需的配置状态:
helm upgrade <your-release-name> <repo-name>/<chart-name> --reuse-values --force
例如
helm upgrade my-ingress stable/nginx-ingress --reuse-values --force
您还可以使用:
helm history <release_name>
helm rollback --force [RELEASE] [REVISION]
--force
参数在这两种情况下,如果需要
强制通过 delete/recreate 更新资源
我试图了解 helm 部署的一般性质。我有一个由 helm 管理的部署,它使用 service.yaml 文件启动了 jdbc 服务。
部署后,根据 service.yaml 文件,我可以清楚地看到该服务处于活动状态。
如果我手动删除服务,服务就死了。
我的问题是:如果我使用 kubectl delete 手动删除服务,是否应该重新启动该服务,因为部署是 helm 管理的? 即使在手动删除时,是否有任何选项可以配置服务重启? 这是默认和预期的行为吗?
我尝试了很多选项并搜索了文档,但我无法找到导致服务在删除时重新启动的 spec/option/config,这与 pods 不同,'Always Restart' ]选项。
apiVersion: v1
kind: Service
metadata:
name: {{ .Values.exampleJDBCService.name }}
namespace: {{ .Release.Namespace }}
spec:
type: {{ .Values.exampleJDBCService.type }}
sessionAffinity: "{{ .Values.sessionAffinity.type }}"
{{- if (eq .Values.sessionAffinity.type "ClientIP") }}
sessionAffinityConfig:
clientIP:
timeoutSeconds: {{ .Values.sessionAffinity.timeoutSeconds }}
{{- end }}
selector:
{{ template "spark-example.fullname" . }}: "true"
ports:
- protocol: TCP
port: {{ .Values.exampleJDBCService.clusterNodePort }}
targetPort: {{ .Values.exampleJDBCService.targetPort }}
{{- if (and (eq .Values.exampleJDBCService.type "NodePort") (not (empty .Values.exampleJDBCService.clusterNodePort))) }}
nodePort: {{ .Values.exampleJDBCService.clusterNodePort }}
{{- end }}
你有点混搭。
您在 pod 上定义的 RestartAlways
配置它总是在完成或失败时重新启动。
您看到 pod 在删除时重新创建的原因是它有一个创建它的部署对象,并且它希望始终具有所需的 pods 数量。
Helm 不与集群中对象的删除交互,一旦他创建了他的对象,他就不再与它们交互,直到下一个 helm 命令。
希望它能帮助您更好地理解术语。
Deleted/corrupted Kubernetes 资源对象(在您的情况下是服务)不能由 tiller 自动 "restarted",但幸运的是可以使用以下 helm 命令恢复到所需的配置状态:
helm upgrade <your-release-name> <repo-name>/<chart-name> --reuse-values --force
例如
helm upgrade my-ingress stable/nginx-ingress --reuse-values --force
您还可以使用:
helm history <release_name>
helm rollback --force [RELEASE] [REVISION]
--force
参数在这两种情况下,如果需要