尝试创建新容器时,出现错误“外部:用户无权访问服务帐户“默认”“。这最近开始发生。任何用户(包括管理员帐户)都会发生这种情况。有任何想法吗?
google-compute-engine google-cloud-platform google-kubernetes-engine
我尝试按照以下教程进行操作: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) 我很想用我的 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
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) 上周,在将我们的 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) 我有一个想要调试的 GKE Kubernetes 集群。
是否可以使用ubuntu图像和 SSH 等方式以完全权限启动集群内的容器,以便我能够在其中安装软件并apt运行各种调试命令?
我目前无法从我的私有 Kubernetes 集群访问/ping/连接到 Google 之外的任何服务。Pod 正在运行 Alpine linux。
路由表
/sleepez/api # ip route show table all
default via 10.52.1.1 dev eth0
10.52.1.0/24 dev eth0 scope link src 10.52.1.4
broadcast 10.52.1.0 dev eth0 table local scope link src 10.52.1.4
local 10.52.1.4 dev eth0 table local scope host src 10.52.1.4
broadcast 10.52.1.255 dev eth0 table local scope link src 10.52.1.4
broadcast 127.0.0.0 dev lo table local scope link src 127.0.0.1
local 127.0.0.0/8 dev lo table local scope host src 127.0.0.1
local 127.0.0.1 …Run Code Online (Sandbox Code Playgroud) linux-networking kubernetes google-cloud-platform google-kubernetes-engine
我一直在尝试在 Google Cloud 上测试 Kubernetes,但需要在部署的应用程序上公开 HTTPS/TLS(仅)。首先,我只是按照本教程进行操作,该教程适用于端口 80 上的普通 HTTP:https : //cloud.google.com/kubernetes-engine/docs/quickstart
为了使用Let's Encrypt获得 TLS 支持,我尝试过(但没有成功):
... 有没有人对如何为原始教程只提供 HTTPS 有任何建议?除非它是免费赠品,否则不需要普通的 HTTP,但我真的在这个问题上摸不着头脑,因为我之前没有使用过 Kubernetes,而且我根本无法让 Let's Encrypt 在这里工作。
ssl google-cloud-platform google-kubernetes-engine lets-encrypt go
我正在尝试在PersistentVolumeClaimGKE 中部署 Postgres。根据此处的描述(请参阅 参考资料PGDATA),建议在安装外部卷时创建一个子目录。所以,这就是我对 PG 部署所做的事情:
spec:
containers:
- name: postgres-dev
image: "postgres:12.1"
imagePullPolicy: IfNotPresent
ports:
- containerPort: 5432
env:
- name: PGDATA
value: "/var/lib/postgresql/data/pgdata"
volumeMounts:
- name: postgres-persistent-storage-dev
mountPath: "/var/lib/postgresql/data/pgdata"
volumes:
- name: postgres-persistent-storage-dev
persistentVolumeClaim:
claimName: postgres-pvc-dev
Run Code Online (Sandbox Code Playgroud)
/pgdata我在 中创建子目录/postgresql/data,这将是 Postgres 数据的原始挂载点。
但是当我尝试部署 Postgres pod 时,它因退避错误而停止,并且收到以下事件:
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 20s default-scheduler Successfully assigned default/postgres-dev-7f549754d-nm2lf to gke-cluster-pool-1-4ce1e4d6-m33c
Normal SuccessfulAttachVolume 15s attachdetach-controller AttachVolume.Attach …Run Code Online (Sandbox Code Playgroud) 在为网络负载平衡创建目标池时,有一个health check选项。
还有一个livenessProbe在容器规范中命名的属性。
活性探针检查配置它的容器是否仍在运行。如果活性探测失败,kubelet 会杀死容器,容器将受到其重启策略的约束。通过配置 pod 配置的 template.spec.containers.livenessprobe 节来设置活性检查。
容器配置的时候健康检查就不需要了livenessProbe吗?
据我了解,如果容器关闭,POD 将自动重启。在这种情况下,不需要进行健康检查。
节点挂了怎么办?据我了解,kubernetes 会在另一个 NODE 中启动 POD,这意味着 POD 将再次重启。
在我看来,无论如何,配置 livenessProbe 时就不需要进行健康检查。
google-compute-engine kubernetes google-cloud-platform google-kubernetes-engine
我有一个同时运行 aweb和workerDeployment的 Rails 服务器。一个启动 Puma,另一个启动 Sidekiq。如何rails console使用在 Kubernetes 集群上运行的应用程序映像连接到交互式?
如下图所示,当将节点升级到新版本的 Kubernetes 时,每个节点上的 pod 都会在新节点上使用更新版本的 Kubernetes 重新创建。
但是,似乎没有等待新 Pod 处于 Ready 状态,旧 Pod 就被销毁(终止),导致停机,因为新 Pod 仍处于 ContainerCreating 状态。
对此有解释吗,还是我做错了什么?