<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Public Cloud on Cylon&#39;s Collection</title>
    <link>https://www.161616.top/tags/public-cloud/</link>
    <description>Recent content in Public Cloud on Cylon&#39;s Collection</description>
    <generator>Hugo -- 0.125.7</generator>
    <language>zh</language>
    <lastBuildDate>Sun, 08 Jun 2025 23:00:36 +0800</lastBuildDate>
    <atom:link href="https://www.161616.top/tags/public-cloud/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>解决AWS EKS error You must be logged in to the server (Unauthorized)</title>
      <link>https://www.161616.top/aws-eks-error-you-must-be-logged-in-to-the-server/</link>
      <pubDate>Sat, 07 Jun 2025 00:00:00 +0000</pubDate>
      <guid>https://www.161616.top/aws-eks-error-you-must-be-logged-in-to-the-server/</guid>
      <description>问题描述 当获取了 EKS kubeconfig 后，使用该 kubeconfig 提示如下报错
bash 1 2 $ kubectl get pod --kubeconfig kubeconfig error: You must be logged in to the server (Unauthorized) 但该 IAM 用户已经存在了管理员权限了
问题原因 该文章有对这个问题进行描述
quote 您不是集群创建者
如果您的 IAM 实体未用于创建集群，说明您不是集群创建者。在这种情况下，请完成以下步骤，将您的 IAM 实体映射到 aws-auth ConfigMap 以允许访问集群 [1]
这里检查和文章描述一致, 但还是这样的问题
bash 1 2 3 4 5 6 $ aws sts get-caller-identity { &amp;#34;UserId&amp;#34;: &amp;#34;AIDAXxxxxxxxIIWKMR22Q&amp;#34;, &amp;#34;Account&amp;#34;: &amp;#34;55555555496&amp;#34;, &amp;#34;Arn&amp;#34;: &amp;#34;arn:aws:iam::55555555496:user/eks-user&amp;#34; } quote 这是因为，必须将该用户作为集群的 Access 进行关联，而不是授权 “EKS*” 相关权限 图 - 集群用户选择已经存在的 IAM 用户</description>
    </item>
    <item>
      <title>Amazon ECR自动创建不存在的存储库</title>
      <link>https://www.161616.top/aws-ecr-auto-create-repository/</link>
      <pubDate>Fri, 02 May 2025 00:00:00 +0000</pubDate>
      <guid>https://www.161616.top/aws-ecr-auto-create-repository/</guid>
      <description>Amazon ECR 目前不支持镜像存储库的自动创建。当开发人员向 Amazon ECR 推送一个新进项，如果与其对应的存储库不存在，推送就会失败。Amazon ECR 相比起其他公有云，他的镜像是必须要求 dockerhub.io/test/nginx:version, 这里 nginx 才会被是为一个镜像存储库，而 GCP 的 Artifact registry 是 test (Project )才会被视为一个镜像存储库。这样对于存储仓库就不需要额外创建了。
下文阐述 Amazon ECR创建仓库的方法
方法1：awscli awscli 中有 create-repository 子命令，允许用户创建一个仓库
bash 1 aws ecr create-repository --repository-name ${REPO_NAME} 可以使用脚本来检测仓库是否存在 [1]
bash 1 2 3 4 5 6 7 8 9 output=$(aws ecr describe-repositories --repository-names ${REPO_NAME} 2&amp;gt;&amp;amp;1) if [ $? -ne 0 ]; then if echo ${output} | grep -q RepositoryNotFoundException; then aws ecr create-repository --repository-name ${REPO_NAME} else &amp;gt;&amp;amp;2 echo ${output} fi fi 或 [1]</description>
    </item>
    <item>
      <title>创建一个aws ecr自动刷新密钥的sidecar</title>
      <link>https://www.161616.top/aws-ecr-auto-refresh-sidecar/</link>
      <pubDate>Fri, 02 May 2025 00:00:00 +0000</pubDate>
      <guid>https://www.161616.top/aws-ecr-auto-refresh-sidecar/</guid>
      <description>创建 Dockerfile, 因为需要 aws 命令，就不特别去安装了，直接使用 awslinux 的镜像
docker 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 FROM amazonlinux:2 RUN yum update -y &amp;amp;&amp;amp; \ yum install -y awscli jq &amp;amp;&amp;amp; \ yum clean all WORKDIR /app COPY refresh-ecr-credentials.sh ENV AWS_REGION=${AWS_REGION:-us-east-1} ENV REFRESH_INTERVAL=${REFRESH_INTERVAL:-3600} ENV CREDENTIALS_DIR=${CREDENTIALS_DIR:-/shared_credentials} ENV AWS_CREDENTIALS_FILE=${AWS_CREDENTIALS_FILE:-/opt/password} RUN mkdir -p ${CREDENTIALS_DIR} ~/.aws /opt &amp;amp;&amp;amp; \ chmod 700 ${CREDENTIALS_DIR} ~/.aws /opt &amp;amp;&amp;amp; \ chmod +x /app/refresh-ecr-credentials.</description>
    </item>
    <item>
      <title>使用terraform利用已有资源创建GKE集群</title>
      <link>https://www.161616.top/gke-create-exists-resources/</link>
      <pubDate>Wed, 02 Oct 2024 00:00:00 +0000</pubDate>
      <guid>https://www.161616.top/gke-create-exists-resources/</guid>
      <description>近日创建GKE集群，需要使用现有的VPC进行创建，所以需要掌握两个步骤，导入资源，创建集群
terraform 导入命令 GCP中的资源地址和 ID。资源地址是指向配置中的资源实例的标识符。ID 是标识 Google Cloud 中要导入的资源的标识符
资源地址通常为 terraform在定义这类资源时配置的（对应提供商支持），以 GCP 为例 Cloud Storage 存储桶， google_storage_bucket.sample，sample 为 id，定义如下
yaml 1 2 3 4 5 6 resource &amp;#34;google_storage_bucket&amp;#34; &amp;#34;sample&amp;#34; { name = &amp;#34;my-bucket&amp;#34; project = &amp;#34;sample-project&amp;#34; location = &amp;#34;US&amp;#34; force_destroy = true } 示例 - 导入现有GKE集群 语法
bash 1 terraform import &amp;lt;resource_name&amp;gt;.&amp;lt;name&amp;gt; &amp;lt;project&amp;gt;/&amp;lt;locations&amp;gt;/&amp;lt;real_resource_name&amp;gt; 实例
bash 1 terraform import google_container_cluster.gke project20231124/asia-east2/gke-prd-cluster-02 输出结果如下
bash 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 $ terraform import google_container_cluster.</description>
    </item>
    <item>
      <title>GKE强制升级后JAVA Pod无法识别limit限制</title>
      <link>https://www.161616.top/gke-invalid-pod-limits/</link>
      <pubDate>Wed, 11 Sep 2024 00:00:00 +0000</pubDate>
      <guid>https://www.161616.top/gke-invalid-pod-limits/</guid>
      <description>今日 GKE EOL，kubelet 自动升级至1.28后，Java程序在启动后无法识别资源清单中的限制，被大量OOMKill
Deployment清单中已经配置了资源限制，例如下面的参数
yaml 1 2 3 4 5 resources: limits: memory: &amp;#34;1Gi&amp;#34; requests: memory: &amp;#34;600Mi&amp;#34; JAVA_OPS参数配置是使用百分比
bash 1 -XX:+UseContainerSupport -XX:InitialRAMPercentage=70.0 -XX:MaxRAMPercentage=70.0 但是启动后无法识别参数，使用 gcloud 登录到主机内查看 jvm 运行状态（因为容器使用 distroless）
bash 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 project-20220325-asia-east-2-pool-221ab289-hgnf ~ # nsenter -t 274655 --mount --uts --ipc --net --pid /opt/java/openjdk/bin/java -XX:+UnlockDiagnosticVMOptions -XX:+PrintContainerInfo -version OSContainer::init: Initializing Container Support Detected cgroups v2 unified hierarchy Path to /cpu.</description>
    </item>
    <item>
      <title>使用docker管理谷歌物件仓库gcr上的镜像</title>
      <link>https://www.161616.top/docker-push-gcr/</link>
      <pubDate>Sat, 01 Jun 2024 00:00:00 +0000</pubDate>
      <guid>https://www.161616.top/docker-push-gcr/</guid>
      <description>创建服务账户 首先可以到「 IAM管理 -&amp;gt; 服务帐户」新增帐户。在新增完成后，会得到一把 key，将它下载后请妥善保管，因为所有相关的身份认证都会用到，这个 key 在下载后就无法继续下载了。
授权 接着到「IAM -&amp;gt; 新增」成员，并且选择角色，这里选择「Cloud Storage -&amp;gt; 储存空间物件检视者」，让此帐户具备有 read（读取） storage 的功能。
登录 bash 1 2 cat KEY-FILE | docker login -u KEY-TYPE --password-stdin \ https://LOCATION-docker.pkg.dev GCP 的 KEY-TYPE 通为 json_key，但这里包含两种类型 _json_key 和 _json_key_base64
KEY-FILE 就是下载的 Service account key 的文件
bash 1 2 cat KEY-FILE | docker login -u _json_key --password-stdin \ https://LOCATION-docker.pkg.dev 通常 Service account key 文件内容如下
yaml 1 2 3 4 5 6 7 8 9 10 11 12 13 { &amp;#34;type&amp;#34;: &amp;#34;service_account&amp;#34;, &amp;#34;project_id&amp;#34;: &amp;#34;project2024-0101&amp;#34;, &amp;#34;private_key_id&amp;#34;: &amp;#34;bdfsd612779509406bb8452c3ek12d730ed547e722d&amp;#34;, &amp;#34;private_key&amp;#34;: &amp;#34;-----BEGIN PRIVATE KEY----.</description>
    </item>
    <item>
      <title>GCP机器类型</title>
      <link>https://www.161616.top/type-of-machine-for-gcp/</link>
      <pubDate>Thu, 02 May 2024 00:00:00 +0000</pubDate>
      <guid>https://www.161616.top/type-of-machine-for-gcp/</guid>
      <description>本文档使用以下术语 机器系列：针对特定工作负载优化的一组精选处理器和硬件配置。创建虚拟机时，您可以从首选机器系列中选择预定义或自定义机器类型。
机器系列：机器系列按系列和世代进一步分类。例如，通用机器系列中的 N1 系列是 N2 系列的旧版本。世代编号或系列号越高，表示底层 CPU 平台或技术较新。例如，M3 系列是 M2 系列的较新世代。
机器类型：每个机器类型都有一个预定义机器类型，用于为您的虚拟机提供一组资源。如果预定义机器类型不能满足您的需求，您还可以为某些机器系列创建自定义机器类型。
代 Intel AMD Arm 第 4 代机器系列 N4, C4, X4 N/A C4A 第 3 代机器系列 C3、Z3、H3、M3、A3 C3D N/A 第 2 代机器系列 E2、N2、C2、M2、A2、G2 N2D、C2D、T2D、E2 T2A 第 1 代机器系列 N1、M1 机器系列和系列建议 下表提供了针对不同工作负载的建议。
通用工作负载 E2 N2、N2D、N1 C3、C3D Tau T2D、Tau T2A 以更低的费用进行日常计算 在多种机器类型之间实现均衡的性价比 在各种工作负载中始终如一地保持高性能 最佳每核心性能/费用（适用于横向扩容工作负载） 低流量 Web 服务器
后台应用
容器化的微服务
微服务
虚拟桌面
开发和测试环境 中低流量 Web 和应用服务器
容器化的微服务
商业智能应用
虚拟桌面
CRM 应用</description>
    </item>
    <item>
      <title>GKE - 为GKE集群增加VPC防火墙规则</title>
      <link>https://www.161616.top/gke-vpc-firewall/</link>
      <pubDate>Thu, 02 May 2024 00:00:00 +0000</pubDate>
      <guid>https://www.161616.top/gke-vpc-firewall/</guid>
      <description>GKE添加VPC防火墙规则有与GCE有一些区别，必须找到GKE的”网络标记“才可以，如下
选择 Kubernetes Engine =&amp;gt; 选择 ”集群“ 进入 GKE 集群主页
随便选择一个集群，进入集群详细页面
选择集群中的任意一个节点池
找到节点池中任意一个节点，点击进入
进入后向下拉找到”网络标记“部分，这个网络标记可以标记这个集群的所有节点
如果想自定义”网络标记“的名称，可以在集群首页选择标记进行修改</description>
    </item>
    <item>
      <title>GKE标准集群价格选择示例</title>
      <link>https://www.161616.top/price-of-gke/</link>
      <pubDate>Thu, 02 Nov 2023 00:00:00 +0000</pubDate>
      <guid>https://www.161616.top/price-of-gke/</guid>
      <description>GKE标准机器通常费用组成为 “集群管理费” + 标准GCE主机费用，以香港为例
主机规格 CPU (CORE/Mon) MEM (GB/Mon) E2( E2Balanced: N1, N2)：费用优化 $23.77 $2.99 N1 (旧型号的Intel Sandy Bridge、Ivy Bridge、Haswell、Broadwell、Skylake) $38.45 $4.55 N2 CPU $31.9 $4.01 N2D CPU $27.75 $3.48 选择核心的标准（强要求）
intel 2的公差，例如1, 2, 4, 6, 8, 10 AMD 2, 4, 8, 16, 32 只有 “费用优化” (cose-optimized) 的可以自定义配置，计算优化，内存优化等都是固定配置
新加坡的价格是香港价格的 &amp;ldquo;90%&amp;rdquo;</description>
    </item>
  </channel>
</rss>
