我正在 kubernetes 集群上试用 coreos。此设置包括一个服务 DNSSEC 响应的绑定服务器。由于 DNSSEC 密钥管理,绑定服务器用完所有可用的熵并在启动时挂起,并且需要数小时才能获得足够的熵来签署单个区域。
我可以做些什么来增加服务器上的熵以防止这种情况发生?
我尝试按照以下教程进行操作:https : //cloud.google.com/container-engine/docs/tutorials/http-balancer
一切似乎都在进行,直到最后做
kubectl describe ingress basic-ingress
返回
Name: basic-ingress
Namespace: default
Address: {hidden_external_ip}
Default backend: nginx:80 ({hidden_internal_ip}:80)
Rules:
Host Path Backends
---- ---- --------
* * nginx:80 ({hidden_internal_ip}:80)
Annotations:
backends: {"k8s-be-00000--0000000000000000":"Unknown"}
forwarding-rule: k8s-fw-default-basic-ingress--0000000000000000
target-proxy: k8s-tp-default-basic-ingress--0000000000000000
url-map: k8s-um-default-basic-ingress--0000000000000000
Events:
FirstSeen LastSeen Count From SubobjectPath Type Reason Message
--------- -------- ----- ---- ------------- -- ------ ------ -------
1m 1m 1 {loadbalancer-controller } Normal ADD default/basic-ingress
23s 23s 1 {loadbalancer-controller } Normal CREATE ip: {hidden_external_ip}
Run Code Online (Sandbox Code Playgroud)
请注意,后端行以“unknown”结尾
此外,卷曲外部 IP 会返回以下内容:
<html><head> …Run Code Online (Sandbox Code Playgroud) Google Cloud Container Builder API文档表示您可以通过 API 设置超时。
我们的构建是由 webhooks 触发的,这意味着 API 对我们来说无关紧要。有没有办法在自动触发的构建上设置构建超时?
我很想用我的 GKE 集群设置 HSTS,因为现在 HTTP 请求在设置后返回一个谷歌损坏的机器人 404 页面ingress.yml annotations:
kubernetes.io/ingress.allow-http: "false"
显然在ingress.yml(即hsts-max-age和hsts-include-subdomains)中有这个选项,但据我所知 GKE 不支持它:https : //github.com/kubernetes/ingress/blob/7c749ede0a2d88f289279d61d04005e22f002104/docs/annotations-related.md
我真的很想避免使用和维护自定义 Nginx 负载均衡器并避免失去 Google 的扩展能力,坚持使用默认的负载均衡器将是一个强烈的要求。我还想避免让 HTTP 请求通过并处理我的应用程序中的重定向和 HSTS 标头。
如果 HSTS 不可能,我可以接受一个很好的重定向设置。
非常感谢!
https load-balancing kubernetes google-kubernetes-engine hsts
CentOS 中的默认 Docker 安装从 Cgroup 开始systemd。我从官方 YUM 仓库安装了 Kubernetes,systemddrop-in 10-kubeadm.conf有以下内容:
[Service]
Environment="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf"
Environment="KUBELET_SYSTEM_PODS_ARGS=--pod-manifest-path=/etc/kubernetes/manifests --allow-privileged=true"
Environment="KUBELET_NETWORK_ARGS=--network-plugin=cni --cni-conf-dir=/etc/cni/net.d --cni-bin-dir=/opt/cni/bin"
Environment="KUBELET_DNS_ARGS=--cluster-dns=10.96.0.10 --cluster-domain=cluster.local"
Environment="KUBELET_AUTHZ_ARGS=--authorization-mode=Webhook --client-ca-file=/etc/kubernetes/pki/ca.crt"
Environment="KUBELET_CADVISOR_ARGS=--cadvisor-port=0"
Environment="KUBELET_CGROUP_ARGS=--cgroup-driver=systemd"
Environment="KUBELET_CERTIFICATE_ARGS=--rotate-certificates=true --cert-dir=/var/lib/kubelet/pki"
ExecStart=
ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_SYSTEM_PODS_ARGS $KUBELET_NETWORK_ARGS $KUBELET_DNS_ARGS $KUBELET_AUTHZ_ARGS $KUBELET_CADVISOR_ARGS $KUBELET_CGROUP_ARGS $KUBELET_CERTIFICATE_ARGS $KUBELET_EXTRA_ARGS
Run Code Online (Sandbox Code Playgroud)
我还尝试获取环境变量以查看 systemd 插件是否正确覆盖 ( systemctl show --property=Environment kubelet | cat):
Environment=KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf\x20--kubeconfig=/etc/kubernetes/kubelet.conf KUBELET_SYSTEM_PODS_ARGS=--pod-manifest-path=/etc/kubernetes/manifests\x20--allow-privileged=true KUBELET_NETWORK_ARGS=--network-plugin=cni\x20--cni-conf-dir=/etc/cni/net.d\x20--cni-bin-dir=/opt/cni/bin KUBELET_DNS_ARGS=--cluster-dns=10.96.0.10\x20--cluster-domain=cluster.local KUBELET_AUTHZ_ARGS=--authorization-mode=Webhook\x20--client-ca-file=/etc/kubernetes/pki/ca.crt KUBELET_CADVISOR_ARGS=--cadvisor-port=0 KUBELET_CGROUP_ARGS=--cgroup-driver=systemd KUBELET_CERTIFICATE_ARGS=--rotate-certificates=true\x20--cert-dir=/var/lib/kubelet/pki
Run Code Online (Sandbox Code Playgroud)
当我使用 初始化集群时kubeadm init --apiserver-advertise-address=X.X.X.X --pod-network-cidr=10.244.0.0/16,过程成功。但是,运行kubelet version会给我一个 Cgroup 配置错误错误:
error: failed to run Kubelet: failed to create …Run Code Online (Sandbox Code Playgroud) GKE 上运行的 ElasticSearch 集群出现问题。具有“数据”角色的节点开始意外崩溃并出现错误:
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
bootstrap checks failed
Run Code Online (Sandbox Code Playgroud)
当然,这个 StatefulSet 控制器中有一个 init 容器,它将 vm.max_map_count 设置为 262144
更重要的是,这个初始化容器似乎成功完成:
kubectl descrive pod elastic-data-0
Init Containers:
init-sysctl:
Container ID: docker://23d3b3d11198510aa01aef340b92e1603785804fbf75e963fdbd61acfe458318
Image: busybox:latest
Image ID: docker-pullable://busybox@sha256:5e8e0509e829bb8f990249135a36e81a3ecbe94294e7a185cc14616e5fad96bd
Port: <none>
Command:
sysctl
-w
vm.max_map_count=262144
State: Terminated
Reason: Completed
apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
name: elastic-data
labels:
component: elasticsearch
role: data
spec:
serviceName: elasticsearch-data
updateStrategy:
type: RollingUpdate
replicas: 3
template:
metadata:
labels:
component: elasticsearch …Run Code Online (Sandbox Code Playgroud) 我正在尝试查找 Kubernetes 集群上运行的哪个应用程序正在使用特定端口与 RabbitMQ 集群进行通信。在 RabbitMQ 上,我看到连接来自 192.168.1.10:34226。192.168.1.10是Kubernetes节点之一。登录到 192.168.1.10 后,我检查是否通过 tcpdump 命令从该节点建立了连接tcpdump -i eth0 port 34226。我看到两个方向的交通。现在我正在尝试查找哪个进程正在建立此连接。首先我尝试了 netstat:
netstat -tapn | grep 34226
结果什么也没发现。然后我尝试了 ss 但仍然一无所获。连接已建立,通过 tcpdump 我可以看到发送到 RabbitMQ 的心跳数据包以及来自 RabbitMQ 的响应。但 netstat 和 ss 不报告已建立的连接。
更新1
我发现这与网络命名空间有关。我的问题与this问题类似,但我需要找到从34226端口建立连接的进程的PID。
上周,在将我们的 GKE 集群升级到 Kubernetes 1.13.6-gke.13 后,由于 CPU 使用率过高,我们集群中的所有节点都开始出现故障。是节点本身上的 Kubernetes 软件耗尽了所有 CPU,而不是 Pod。
这是top我们通过 SSH 连接到节点时显示的内容:
top - 10:11:27 up 5 days, 22 min, 1 user, load average: 23.71, 21.90, 20.32
Tasks: 858 total, 3 running, 854 sleeping, 0 stopped, 1 zombie
%Cpu(s): 33.5 us, 30.9 sy, 0.0 ni, 35.5 id, 0.0 wa, 0.0 hi, 0.1 si, 0.0 st
MiB Mem : 30157.0 total, 14125.6 free, 4771.2 used, 11260.1 buff/cache
MiB Swap: 0.0 total, 0.0 free, 0.0 used. 24762.7 …Run Code Online (Sandbox Code Playgroud) 更新 2.我想将所有流量添加并转发到localhost/admin/而不是localhost/.
localhost/(然后通过应用获取302 localhost/login),localhost/overview,localhost/books/details, ETC。localhost/admin/localhost/admin/login(通过申请获得302 )localhost/admin/overviewlocalhost/admin/books/detailslocalhost/admin/(我localhost/login通过申请得到了302),
我也可以使用ingrees-nginx-controller而不是安装文件。
在 docker nginx.conf 中(或类似于 k8s)
server {
listen 80 default_server;
listen [::]:80 default_server;
...
location /admin {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host/admin;
proxy_pass http://<conteiner2>.docker-network;
}
...
}
Run Code Online (Sandbox Code Playgroud)
Update1
对于 kubernetes,我正在尝试设置为此,ingress-nginx
我安装了并使用此 YAMLingress-nginx-controller设置:ingress-nginx
apiVersion: …Run Code Online (Sandbox Code Playgroud) Kubernetes集群实现容器的共享存储持久化有哪些常见的共享存储方案?NAS / iSCSI 上的 NFS 不知何故?您如何使用这种类型的存储备份 Kubernetes 上的数据?
backup network-attached-storage storage-area-network architecture kubernetes
kubernetes ×10
docker ×2
architecture ×1
backup ×1
centos ×1
cgroup ×1
coreos ×1
entropy-pool ×1
gcloud ×1
hsts ×1
https ×1
netstat ×1
nginx ×1
systemd ×1
tcpdump ×1