小编Arg*_*dhu的帖子

如何避免在Java中创建Thread恶意类

在有效的Java第2版第70项中,Josh Bloch解释了线程敌对

即使所有方法调用都被外部同步包围,此类对于并发使用也是不安全的.线程敌意通常是在没有同步的情况下修改静态数据

有人可以通过示例向我解释如果类在没有内部同步的情况下修改共享静态数据,那么通过外部同步实现线程安全是不可能的吗?

java multithreading thread-safety

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

创建错误:pod 被禁止:<pod> 配额失败:<namespace>:必须指定限制。内存

我创建了两个部署(部署是由 kubenetes 操作员进行的,还有其他活动,例如服务创建、秘密创建等,尽管我觉得它们与此错误无关),并且预计pod 会出现,但 pod 没有作用过来。当我检查事件时,我发现两个 Pod 都出现以下错误(我列出了一个)

60m         Warning   FailedCreate        replicaset/sast-edge-5577bdcf6c      Error creating: pods "sas-edge-5577bdcf6c-94ps9" is forbidden: failed quota: app-xxxx-stable-biw9247u7z: must specify limits.memory
Run Code Online (Sandbox Code Playgroud)

当我描述 pod 时,我看到已经指定了限制

 image: registry.xxx.xxxx.com/xxkl/xxx-xxxx:1.4
        imagePullPolicy: IfNotPresent
        name: nsc-core
        ports:
        - containerPort: 3000
          protocol: TCP
        resources:
          limits:
            memory: 500Mi
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
Run Code Online (Sandbox Code Playgroud)

我还检查了 NS 的配额

Name:          app-xxxx-stable-biw9247u7z
Namespace:     app-xxxx-stable-biw9247u7z
Resource       Used    Hard
--------       ----    ----
limits.memory  4072Mi  8Gi
Run Code Online (Sandbox Code Playgroud)

我不确定为什么 kubernetes 没有指定资源限制。需要帮忙。

limit kubernetes

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

如何验证 Kubernetes 中的 cronjob 成功完成

我正在尝试创建一个在单个 busybox 容器中运行命令日期的 cronjob 。该命令应每分钟运行一次,并且必须在 17 秒内完成或由 Kubernetes 终止。cronjob 名称和容器名称都应该是 hello。

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: hello
spec:
  jobTemplate:
    metadata:
      name: hello
    spec:
      completions: 1
      activeDeadlineSeconds: 17
      template:
        metadata:
          creationTimestamp: null
        spec:
          containers:
          - image: busybox
            name: hello
            command: ["/bin/sh","-c","date"]
            resources: {}
          restartPolicy: OnFailure
  schedule: '*/1 * * * *'
status: {}
Run Code Online (Sandbox Code Playgroud)

我想验证作业是否至少成功执行了一次。我使用命令k get cronjob -w尝试了它,它给了我这个结果。

在此处输入图片说明

是否有另一种方法来验证作业是否成功执行?向容器添加命令日期是一种好方法吗?

kubernetes kubernetes-cronjob

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

“etcdctl member list”的以下输出是否正确,ETCD集群是否处于良好状态?

我是 k8s 的新手,我正在尝试构建一个 etcd 集群。现在我已经完成了所有步骤并获得了所需的输出。

ubuntu@controller0:/etc/systemd/system$ sudo ETCDCTL_API=3 etcdctl member list --endpoints=https://10.240.0.10:2379 --cacert=/etc/etcd/ca.pem --cert=/etc/etcd/kubernetes.pem --key=/etc/etcd/kubernetes-key.pem
3a57933972cb5131, started, controller2, https://10.240.0.12:2380, https://10.240.0.12:2379, false
f98dc20bce6225a0, started, controller0, https://10.240.0.10:2380, https://10.240.0.10:2379, false
ffed16798470cab5, started, controller1, https://10.240.0.11:2380, https://10.240.0.11:2379, false
Run Code Online (Sandbox Code Playgroud)

但是让我有点困惑的是false所有 3 个 etcd 主机。有人可以帮我解释一下,这是否意味着他们目前都不是大师?如果这个输出是正确的

etcd kubernetes

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

如何在 kubernetes 集群中运行 https 安全应用程序

我想在 kubernetes 集群内通过 https 运行我的应用程序,并通过 https 将其公开在集群外部。我创建了pod并公开了端口443。之后,我创建了一个ClusterIP服务,该服务连接到 port 上的 pod443并公开 port 443。最后,我创建了一个ingress连接到端口 上的服务的连接443。我在 GKE 上使用 Helm Chart 部署了所有这些资源。我使用NGINX Ingress控制器。您可以在此处找到该图表。

当我通过 https 在集群内部访问该应用程序时,它可以工作。

curl https://my-nginx.https-app-64-production --cacert /etc/nginx/ssl/tls.crt
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is …
Run Code Online (Sandbox Code Playgroud)

kubernetes kubernetes-ingress nginx-ingress

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

`pivot_longer` 操作 - 实现预期输出的更简单方法?

我有一个df形式:

df <- tibble(
  id = c(1,2,3),
  val02 = c(0,1,0),
  val03 = c(1,0,0),
  val04 = c(0,1,1),
  age02 = c(1,2,3),
  age03 = c(2,3,4),
  age04 = c(3,4,5)
)
Run Code Online (Sandbox Code Playgroud)

我想把它变成整洁的格式,比如:

# A tibble: 9 x 4
     id year    val   age
  <dbl> <chr> <dbl> <dbl>
1     1 02        0     1
2     1 03        1     2
3     1 04        0     3
4     2 02        1     2
5     2 03        0     3
6     2 04        1     4
7     3 02        0     3
8     3 …
Run Code Online (Sandbox Code Playgroud)

r dplyr tidyr tidyverse

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

kubectl - 获取具有特定标签的 Pod 名称

我正在尝试使用返回错误的命令从 pod json 获取 podname

kgp -o jsonpath="{.items[*].metadata[?(@.labels.module=='ddvv-script')].name}"
Run Code Online (Sandbox Code Playgroud)

错误

 is not array or slice and cannot be filtered. Printing more information for debugging the template:
        template was:
                {.items[*].metadata[?(@.labels.module=='ddvv-script')].name}
        object given to jsonpath engine was:
Run Code Online (Sandbox Code Playgroud)

样本文件

{
    "apiVersion": "v1",
    "items": [
        {
            "apiVersion": "v1",
            "kind": "Pod",
            "metadata": {
                "creationTimestamp": "2020-09-18T17:42:50Z",
                "generateName": "ddvv-script-6b784db6bd-",
                "labels": {
                    "app": "my-configs",
                    "lf.module": "ddvv-script",
                    "module": "ddvv-script",
                    "pod-template-hash": "6b784db6bd",
                    "release": "config"
                },
                "name": "ddvv-script-6b784db6bd-rjtgh",
Run Code Online (Sandbox Code Playgroud)

这个命令有什么问题

kubernetes kubectl

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

如何更新 nginx-ingress 控制器以便使用最新的入口路径?

将入口路径从“/”更新为“/test”后,新路径不起作用,并且我仍然不断重定向到旧的“/”路径。关于如何更新 nginx-ingress 控制器以更新入口的任何想法?

更新:我在入口控制器日志中得到以下信息

kubectl logs --tail=10 nginx-ingress-controller-6b5498d8dc-vsdpl
E0923 17:03:11.440951       9 reflector.go:178] pkg/mod/k8s.io/client-go@v0.18.5/tools/cache/reflector.go:125: Failed to list *v1.Service: services is forbidden: User "system:serviceaccount:default:nginx-ingress" cannot list resource "services" in API group "" at the cluster scope
E0923 17:03:25.947663       9 reflector.go:178] pkg/mod/k8s.io/client-go@v0.18.5/tools/cache/reflector.go:125: Failed to list *v1.Endpoints: endpoints is forbidden: User "system:serviceaccount:default:nginx-ingress" cannot list resource "endpoints" in API group "" at the cluster scope
E0923 17:03:35.337064       9 reflector.go:178] pkg/mod/k8s.io/client-go@v0.18.5/tools/cache/reflector.go:125: Failed to list *v1beta1.Ingress: ingresses.networking.k8s.io is forbidden: User "system:serviceaccount:default:nginx-ingress" cannot list resource "ingresses" in API …
Run Code Online (Sandbox Code Playgroud)

kubernetes kubernetes-ingress

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

如何诊断 k8s pod 不断重启的原因?

我使用以下配置文件将 elasticsearch 部署到 minikube:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: elasticsearch
spec:
  replicas: 1
  selector:
    matchLabels:
      name: elasticsearch
  template:
    metadata:
      labels:
        name: elasticsearch
    spec:
      containers:
        - name: elasticsearch
          image: elasticsearch:7.10.1
          ports:
            - containerPort: 9200
            - containerPort: 9300
Run Code Online (Sandbox Code Playgroud)

我运行命令kubectl apply -f es.yml来部署elasticsearch集群。

$ kubectl get pod
NAME                            READY   STATUS    RESTARTS   AGE
elasticsearch-fb9b44948-bchh2   1/1     Running   5          6m23s
Run Code Online (Sandbox Code Playgroud)

elasticsearch pod 每隔几分钟就会重新启动一次。当我运行kubectl describe pod 命令时,我可以看到这些事件:

Events:
  Type     Reason     Age                    From               Message
  ----     ------     ----                   ----               -------
  Normal   Scheduled  7m11s …
Run Code Online (Sandbox Code Playgroud)

elasticsearch kubernetes

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

如何使用 kubernetes 中的 run 命令向 pod 提供注释

我尝试过,但出现错误..我还看到 有关用法,请参阅“kubectl run --help”。 但我无法修复它..

kubectl run pod pod4 --image=aamirpinger/helloworld:latest --port=80 --annotaions=createdBy="Muhammad Shahbaz" --restart=Never
Run Code Online (Sandbox Code Playgroud)

错误:未知标志:--annotaions

kubernetes

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