在有效的Java第2版第70项中,Josh Bloch解释了线程敌对类
即使所有方法调用都被外部同步包围,此类对于并发使用也是不安全的.线程敌意通常是在没有同步的情况下修改静态数据
有人可以通过示例向我解释如果类在没有内部同步的情况下修改共享静态数据,那么通过外部同步实现线程安全是不可能的吗?
我创建了两个部署(部署是由 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 没有指定资源限制。需要帮忙。
我正在尝试创建一个在单个 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尝试了它,它给了我这个结果。
是否有另一种方法来验证作业是否成功执行?向容器添加命令日期是一种好方法吗?
我是 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 主机。有人可以帮我解释一下,这是否意味着他们目前都不是大师?如果这个输出是正确的
我想在 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) 我有一个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) 我正在尝试使用返回错误的命令从 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)
这个命令有什么问题
将入口路径从“/”更新为“/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) 我使用以下配置文件将 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) 我尝试过,但出现错误..我还看到 有关用法,请参阅“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