小编con*_*l_c的帖子

将 docker 映像从 GCR 拉入 GKE 时出错“无法拉取映像 .... 403 Forbidden”

背景:

我有一个 GKE 集群突然无法从 GCR 提取我的 docker 镜像;两者都在同一个 GCP 项目中。它已经运行良好几个月了,提取图像没有任何问题,现在在没有进行任何更改的情况下开始抛出错误。

(注意:我通常是团队中唯一访问 Google Cloud 的人,尽管我团队中的其他人完全有可能在没有意识到的情况下进行了更改/无意中进行了更改)。

我看过有关此主题的其他一些帖子,但其他人提供的解决方案没有帮助。其中两篇帖子对我来说特别突出,因为它们都是在我的问题开始大约 13/14 天前的同一天发布的。这究竟是巧合还是巧合,谁知道呢。

这篇文章和我有同样的问题;不确定发布的评论是否帮助他们解决了问题,但对我来说还没有解决。这个帖子好像也是同样的问题,但是发帖人说等了一段时间后自己解决了。

问题:

几天前我第一次注意到集群上的问题。通过将映像推送到 GCR 然后弹跳 Pod 来部署新映像kubectl rollout restart deployment

然后所有 Pod 都返回ImagePullBackOff,表示无法从 GCR 获取图像:

kubectl get pods

XXX-XXX-XXX     0/1     ImagePullBackOff   0          13d
XXX-XXX-XXX     0/1     ImagePullBackOff   0          13d
XXX-XXX-XXX     0/1     ImagePullBackOff   0          13d
...
Run Code Online (Sandbox Code Playgroud)

kubectl describe pod XXX-XXX-XXX

Normal   BackOff           20s                kubelet                                Back-off pulling image "gcr.io/<GCP_PROJECT>/XXX:dev-latest"
Warning  Failed            20s                kubelet                                Error: ImagePullBackOff
Normal   Pulling …
Run Code Online (Sandbox Code Playgroud)

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

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

控制并行循环中的线程数并减少开销

在我的Fortran 95代码中,我有一系列嵌套的DO循环,整个过程需要大量的时间来计算,所以我想用OpenMP添加并行功能(gfortran -fopenmp用于编译/构建).

有一个主要的DO循环,运行1000次.

其中有一个子DO循环,运行100次.

其他几个DO循环嵌套在此中,迭代次数随着DO循环的每次迭代而增加(第一次一次,最后一次最多1000次).

例:

DO a = 1, 1000

    DO b = 1, 100

        DO c = 1, d
            some calculations
        END DO

        DO c = 1, d
            some calculations
        END DO

        DO c = 1, d
            some calculations
        END DO
    END DO
    d = d + 1
END DO
Run Code Online (Sandbox Code Playgroud)

一些嵌套的DO循环必须以串行方式运行,因为它们本身包含依赖关系(也就是说,循环的每次迭代都有一个包含上一次迭代的值的计算),并且在这种情况下不能轻易并行化.

我可以轻松地使没有任何依赖项的循环并行运行,如下所示:

d = 1
DO a = 1, 1000

    DO b = 1, 100

        DO c = 1, d
            some calculations with dependencies
        END …
Run Code Online (Sandbox Code Playgroud)

parallel-processing fortran loops openmp gfortran

5
推荐指数
1
解决办法
362
查看次数

ASP.NET Core 通过 HTTP 接收自定义配置来配置 Kestrel

这感觉像是一个需要解决的简单问题,但在我的所有搜索中,我仍然没有找到适合我的解决方案。可能是另一种找不到我想要的东西的情况,因为我没有寻找正确的“东西”,但我们在这里......

我有一个 C# Web API 程序,我想从配置对象配置 kestrel 服务器。

我通过休息调用将此配置接收到我的服务中,进入一个CustomConfig对象。我可以在 inProgram.cs或 in 中获取此配置对象Startup.cs,但由于我不想重复自己并进行额外的调用,所以我不想在这两个地方都这样做。

我的偏好是获取配置,Startup.cs因为这是我的其余配置代码所在的位置,并且是我已经使用我的CustomConfig对象的位置。但是,我找不到一种方法来配置 kestrel 服务器以使用我提供给它的证书(在 Startup.cs 中),也找不到一种将此配置注入到Startup.csfrom的方法Program.cs

在其他项目中,我已将 PFX 文件的位置作为环境变量传递:(ASPNETCORE_Kestrel__Certificates__Default__Path在这种情况下,一切都可以正常工作,无需额外的代码配置),但在这个项目中,所有配置都必须通过其余调用检索,因此这里不是一个选项。

我目前一切都在运行,但只能通过两次其余调用来获取配置。配置 kestrel 的当前实现是将 PFX 存储CustomConfig为 base64 字符串,并在以下位置进行配置Program.cs

public static IHostBuilder CreateHostBuilder(string[] args)
        {
            return Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    CustomConfig config = CustomConfig() // <- I receive config here
                    webBuilder.UseStartup<Startup>();
                    webBuilder.UseKestrel(options =>
                    {
                       options.ConfigureHttpsDefaults(d =>
                       {
                           byte[] pfxBytes = Convert.FromBase64String(config.Base64PFXBytes);
                           d.ServerCertificate …
Run Code Online (Sandbox Code Playgroud)

c# kestrel-http-server asp.net-core asp.net-core-webapi

3
推荐指数
1
解决办法
1196
查看次数