标签: google-kubernetes-engine

Google容器引擎上的DaemonSets(Kubernetes)

我有一个包含21个节点的Google容器引擎群集,特别是有一个pod我需要始终在具有静态IP地址的节点上运行(出于出站目的).

Kubernetes支持DaemonSets

通过为节点提供与DaemonSet中的nodeSelector匹配的标签,可以将pod部署到特定节点(或一组节点).然后,您可以为标记节点所在的VM实例分配静态IP.但是,GKE似乎不支持DaemonSet类型.

$ kubectl create -f go-daemonset.json 
error validating "go-daemonset.json": error validating data: the server could not find the requested resource; if you choose to ignore these errors, turn validation off with --validate=false

$ kubectl create -f go-daemonset.json --validate=false
unable to recognize "go-daemonset.json": no kind named "DaemonSet" is registered in versions ["" "v1"]
Run Code Online (Sandbox Code Playgroud)

何时支持此功能以及解决方法是什么?

kubernetes google-kubernetes-engine

11
推荐指数
1
解决办法
805
查看次数

如何停止kubernetes集群?

我借助kube-up.sh在Google计算引擎上启动了数据仓库。该脚本创建了主节点和奴才组。在我不再需要它之后,我想停止集群并关闭所有VM,以免浪费金钱来执行实例。当我关闭它时(我只是关闭了所有群集虚拟机,因为我不知道另一种方法),然后在一段时间后再次启动,群集将无法正常工作。“ kubectl获取节点”会显示关于节点的不正确信息(例如,我有ABC节点==奴才,它仅显示甚至不存在的D),所有命令的运行速度都非常慢。也许我关机不正确。如何适当地停止群集并停止VM,以便在某个时间再次启动它?(不删除)

我有什么集群:

kubernetes-master             | us-central1-b
kubernetes-minion-group-nq7f  | us-central1-b
kubernetes-minion-group-gh5k  | us-central1-b
Run Code Online (Sandbox Code Playgroud)

显示“ kubectl获取节点”命令的内容:

[root@common frest0512]# kubectl get nodes
NAME                           STATUS                     AGE       VERSION
kubernetes-master              Ready,SchedulingDisabled   7h        v1.8.0
kubernetes-minion-group-02s7   Ready                      7h        v1.8.0
kubernetes-minion-group-92rn   Ready                      7h        v1.8.0
kubernetes-minion-group-kn2c   Ready                      7h        v1.8.0
Run Code Online (Sandbox Code Playgroud)

关闭主节点之前,它显示正确(名称和仆从数相同)。

google-cloud-platform kubernetes google-kubernetes-engine

11
推荐指数
2
解决办法
2万
查看次数

即使我是所有者和管理员,也无法在GKE中创建群集角色

创建新的GKE集群后,创建集群角色失败,并显示以下错误:

Error from server (Forbidden): error when creating "./role.yaml":
clusterroles.rbac.authorization.k8s.io "secret-reader" is forbidden: 
attempt to grant extra privileges: [PolicyRule{Resources:["secrets"], 
APIGroups:[""], Verbs:["get"]} PolicyRule{Resources:["secrets"], 
APIGroups:[""], Verbs:["watch"]} PolicyRule{Resources:["secrets"], 
APIGroups:[""], Verbs:["list"]}] user=&{XXX@gmail.com  
[system:authenticated] map[authenticator:[GKE]]} ownerrules= . 
[PolicyRule{Resources:["selfsubjectaccessreviews" 
"selfsubjectrulesreviews"], APIGroups:["authorization.k8s.io"], Verbs: 
["create"]} PolicyRule{NonResourceURLs:["/api" "/api/*" "/apis" 
"/apis/*" "/healthz" "/swagger-2.0.0.pb-v1" "/swagger.json" 
"/swaggerapi" "/swaggerapi/*" "/version"], Verbs:["get"]}] 
ruleResolutionErrors=[]
Run Code Online (Sandbox Code Playgroud)

我的帐户在IAM中具有以下权限:

Kubernetes Engine Admin

Kubernetes引擎集群管理员

所有者

这是我的role.yaml(来自Kubernetes文档):

kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: secret-reader
rules:
- apiGroups: [""]
  resources: ["secrets"]
  verbs: ["get", "watch", "list"]
Run Code Online (Sandbox Code Playgroud)

根据RBAC的GCloud文档,我需要 …

rbac google-cloud-platform kubernetes google-kubernetes-engine

11
推荐指数
2
解决办法
2276
查看次数

如何处理已发布的持续卷?

TL; DR.关于如何在删除PVC后访问数据,以及为什么PV在删除PVC后不会消失,我很遗憾.

我正在采取的步骤:

  1. 手动在GCE中创建了一个磁盘:

    gcloud compute disks create --size 5Gi disk-for-rabbitmq --zone europe-west1-b
    
    Run Code Online (Sandbox Code Playgroud)
  2. 跑:

    kubectl apply -f /tmp/pv-and-pvc.yaml
    
    Run Code Online (Sandbox Code Playgroud)

    使用以下配置:

    # /tmp/pv-and-pvc.yaml
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: pv-for-rabbitmq
    spec:
      accessModes:
      - ReadWriteOnce
      capacity:
        storage: 5Gi
      gcePersistentDisk:
        fsType: ext4
        pdName: disk-for-rabbitmq
      persistentVolumeReclaimPolicy: Delete
      storageClassName: standard
    ---
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: pvc-for-rabbitmq
    spec:
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: 5Gi
      storageClassName: standard
      volumeName: pv-for-rabbitmq
    
    Run Code Online (Sandbox Code Playgroud)
  3. 手动删除了一个PVC(在高级别:我在这里模拟一个灾难性的场景,比如意外删除或错误配置一个helm版本):

    kubectl delete pvc pvc-for-rabbitmq
    
    Run Code Online (Sandbox Code Playgroud)

此时我看到以下内容:

$ kubectl get pv
NAME              CAPACITY   ACCESS MODES …
Run Code Online (Sandbox Code Playgroud)

google-cloud-storage google-cloud-platform kubernetes google-kubernetes-engine

11
推荐指数
4
解决办法
7939
查看次数

GKE 主节点

在 GKE 中,当我们创建节点时,会有一个 master 节点,并且会创建许多 worker 节点。我怀疑主节点是我们创建的一个(提到副本)还是GKE单独创建主节点。形成 gke 集群的拓扑(例如,网格,星形)是什么?

google-kubernetes-engine

11
推荐指数
1
解决办法
2718
查看次数

Kubernetes 是否允许并使用多个 imagePullSecrets 从私有注册表中拉取镜像?

我有一个私人注册表 (gitlab),我的 docker 图像存储在其中。对于部署,会创建一个密钥,允许 GKE 访问注册表。秘密被称为deploy-secret。密钥的登录信息在注册表中很短的时间后就会过期。

我还创建了第二个永久机密,允许访问 docker 注册表,名为permanent-secret.

是否可以用两个秘密指定 Pod?例如:

apiVersion: v1
kind: Pod
metadata:
  name: private-reg
spec:
  containers:
  - name: private-reg-container
    image: <your-private-image>
  imagePullSecrets:
  - name: deploy-secret
  - name: permanent-secret
Run Code Online (Sandbox Code Playgroud)

Kubernetes 在稍后尝试重新拉取镜像时,是否会识别出第一个秘密不起作用(不允许对私有注册表进行身份验证),然后成功回退到第二个秘密?

kubernetes google-kubernetes-engine kubernetes-secrets

11
推荐指数
1
解决办法
3756
查看次数

Kubernetes Pod无法从容器注册表(gcp)中提取图像

我想用一个存在于'eu.gcr.io'(相同项目)上的新映像来更新我在kubernetes上的部署,我之前已经做过。但是现在,吊舱无法拉动图像,因为它们无权这样做。这是我们在pod日志中得到的错误。

Failed to pull image "eu.gcr.io/my-gcp-project/my-image:v1.009": 
rpc error: code = Unknown desc = Error response from daemon: 
unauthorized: You don't have the needed permissions to perform this operation,
and you may have invalid credentials.
Run Code Online (Sandbox Code Playgroud)

群集上的服务帐户具有kubernetes adminstorage admin角色,这应该足够。但是,即使我制作了服务帐户项目编辑器(出于调试目的),它仍然不起作用(相同的错误)。

我也尝试过创建一个新的新集群(默认设置)并在那里应用我的部署,但是随后出现了完全相同的问题。

我不确定我可以尝试什么。

任何帮助或建议,我们将不胜感激。

编辑:

我只是发现我仍然可以拉出并部署旧映像。但是,我创建的每个新映像都不能被kubernetes容器所吸引。

google-cloud-platform kubernetes google-kubernetes-engine google-container-registry google-iam

11
推荐指数
1
解决办法
1103
查看次数

由于权限被拒绝,“kubectl cp”到 pod 失败

当我尝试将一个小文件复制到 Kubernetes pod 时,它失败并显示以下错误:

:~ $kubectl cp /tmp/a default/resolver-proxy-69dc786fcf-5rplg:/usr/local/bin/ --no-preserve=true
    tar: a: Cannot open: Permission denied
    tar: Exiting with failure status due to previous errors
    command terminated with exit code 2
Run Code Online (Sandbox Code Playgroud)

有人可以帮我解决这个问题吗?我在 minikube 上运行 Kubernetes。

由于类似的错误,我还看到另一个 Postgres Pod 处于 Error 状态:

:~ $kubectl logs postgres-7676967946-7lp9g postgres
tar: /var/lib/postgresql/data: Cannot open: Permission denied
tar: Error is not recoverable: exiting now
Run Code Online (Sandbox Code Playgroud)

copy-paste kubernetes google-kubernetes-engine kubectl minikube

11
推荐指数
1
解决办法
9425
查看次数

如何使用 docker-compose 将容器部署到谷歌云?

我对 GCP 很陌生,主要使用 AWS。我目前正在尝试使用 GCP 并希望使用docker-compose.

我设置了一个非常基本的 docker-compose.yml 文件,如下所示:

# docker-compose.yml
version: '3.3'

services:
  git:
    image: alpine/git
    volumes:
      - ${PWD}:/git
    command: "clone https://github.com/PHP-DI/demo.git"

  composer:
    image: composer
    volumes:
      - ${PWD}/demo:/app
    command: "composer install"
    depends_on:
      - git

  web:
    image: php:7.4-apache
    ports:
      - "8080:${PORT:-80}"
      - "8000:${PORT:-8000}"
    volumes:
      - ${PWD}/demo:/var/www/html
    command: php -S 0.0.0.0:8000 -t /var/www/html
    depends_on:
      - composer

Run Code Online (Sandbox Code Playgroud)

因此容器将从 git 获取代码,然后使用 composer 安装依赖项,最后在端口 8000 上可用。

在我的机器上,运行docker-compose up无所不能。但是如何将这个 docker-compose 推送到谷歌云。

我尝试使用docker/compose图像和 Dockerfile构建容器,如下所示:

FROM docker/compose

WORKDIR /opt
COPY docker-compose.yml …
Run Code Online (Sandbox Code Playgroud)

docker google-cloud-platform google-kubernetes-engine docker-compose google-cloud-run

11
推荐指数
2
解决办法
9117
查看次数

GKE Konnectivity 代理写入已关闭的连接

自从 GKE 升级到 1.21.10-gke.2000 以来,我每隔 5 分钟左右就会在 konnectivity-agent 日志中看到这些错误。我无法发现这些问题的任何后果,但我也无法让它们消失。有谁知道问题是什么以及我如何让它消失?

pod_name: "konnectivity-agent-779eadf84d-98kjh"

"conn write failure" err="write tcp 10.48.0.2:40528->10.48.0.8:10250: use of closed network connection" connectionID=215
"connection read failure" err="read tcp 10.48.0.2:40528->10.48.0.8:10250: use of closed network connection"

Run Code Online (Sandbox Code Playgroud)

google-cloud-platform google-kubernetes-engine kubelet

11
推荐指数
1
解决办法
1958
查看次数