【问题标题】:deleting a kubernetes pod within dotnet app删除 dotnet 应用程序中的 kubernetes pod
【发布时间】:2020-06-09 02:56:27
【问题描述】:

在我的 dotnet 应用程序中,我需要监视活动,如果 10 分钟内没有活动,我应该杀死 kubernete pod。杀死进程不会完成这项工作,无论如何要杀死/删除dotnet中的一个pod吗?

【问题讨论】:

  • “在 dotnet 内”是什么意思?是 k8s 集群中的 dotnet 命名空间吗?
  • 是 k8s 集群中的 dotnet

标签: c# .net nginx kubernetes


【解决方案1】:

我假设您想使用 k8s 集群中的代码杀死 pod。 查看 dotnet 核心的 kubernetes client。您可以在正在运行的集群中使用集群配置。

// Load from the default kubeconfig on the machine.
var config = KubernetesClientConfiguration.BuildConfigFromConfigFile();
IKubernetes client = new Kubernetes(config);
var list = client.ListNamespacedPod("default");

之后,您可以列出 pod、服务等,并根据需要将其杀死。

但是,请记住,为了读取本地集群配置和访问资源,您需要设置一个具有正确权限的服务帐户。

下面的示例有权列出服务,例如在 k8s 集群中。相应地根据您的情况进行调整。例如,将“服务”更改为“Pod”,并为您的逻辑分配正确的动词。

apiVersion: v1
kind: ServiceAccount
metadata:
  name: service-discovery-account

---

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  namespace: default
  name: service-discovery-service-reader
rules:
- apiGroups: [""]
  resources: ["services"]
  verbs: ["get", "watch", "list"]

---

apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: service-discovery-service-reader
subjects:
  - kind: ServiceAccount
    # Reference to ServiceAccount kind's `metadata.name`
    name: service-discovery-account
    # Reference to ServiceAccount kind's `metadata.namespace`
    namespace: default
roleRef:
  kind: ClusterRole
  name: service-discovery-service-reader
  apiGroup: rbac.authorization.k8s.io

不要忘记将该服务帐户分配给部署,负责监控集群中的其他 pod:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: your-deployment-app
spec:
  selector:
    matchLabels:
      app: your-deployment-app
  template:
    metadata:
      labels:
        app: your-deployment-app
    spec:
      serviceAccountName: service-discovery-account
      containers:

【讨论】:

    猜你喜欢
    • 2020-12-29
    • 2019-12-27
    • 2019-03-16
    • 2019-04-23
    • 1970-01-01
    • 2022-06-16
    • 1970-01-01
    • 2018-04-29
    • 1970-01-01
    相关资源
    最近更新 更多