- azure 的 docker 容器中没有
/.dockerenv
文件。根据此文件判断是否是 docker 会有问题。 - azure 的 docker 容器,直接点 “Restart”,与点击 “Stop”、“Start” 是不一样的。直接点 "Restart",不会重新拉取镜像(docker 仓库中会有两行
GET /v2/azure-xxx/blobs/sha256:0a63065feb4fc4052e0b7cf82bb89c63cee4e250214f4438df6db54690130352 HTTP/1.1
之类的请求,应该是判断镜像是否有变化,如果没有变化则不会重新拉取)。而 "Stop/Start" 会重新拉取镜像。 -
az container create
之后,如果容器一直卡在 Waiting 状态,可能是某个配置项有错误。通过az container show --resource-group xxx-rg --name xxx-nginx-test
看下容器状态,如果有错误,输出中会有提示。 -
az container create
如果指定的--vnet
参数不正确,会自动创建 vnet。如果指定的 storage account 参数不正确,容器会卡在 Waiting 状态。需要使用az container show
才能查看到错误信息。 - azure.cn 访问 docker hub 会有问题。需要换成国内镜像。azure.cn 也有自己的镜像库,例如 nginx:
dockerhub.azk8s.cn/library/nginx
。但是不全,很多镜像都没有。如果没有,可以在自己的镜像库放一个,共 azure cn 拉取。 - application gateway 的 设置、后端设置、请求超时 中,要把 请求超时(秒) 改大。默认 20 秒,websocket 会断掉(应用层30秒才会发一次心跳,因此长链接会被断掉)。可以改成 300 秒。
Application gateway 的坑
创建 Application Gateway 的时候,前端 public id,后端 virtual network,都需要设置角色,否则会报错,类似于:
The client with object id '15863479-f51e-xxx-xxx-7ebb37331539' does not have authorization to perform action 'Microsoft.Network/publicIPAddresses/join/action' over scope '/subscriptions/727f3ea5-xxxx-xxx-a872-00223b9cd125/resourceGroups/xxxx-rg-test/providers/Microsoft.Network/publicIPAddresses/xxxx-public-ip-test' or the scope is invalid. For details on the required permissions, please visit 'https://aka.ms/appgwroles'. If access was recently granted, please refresh your credentials。单击此处了解详细信息
设置方式:修改 public ip 和 virtual network 的 访问控制。
image.png
点击下面的 添加角色分配,选中角色“网络参与者”,选中当前用户,然后保存。保存后,点击上面的“查看我的访问权限”,里面应该会出现“网络参与者”。
默认自动缩放,数量为0。改成手动,数量为 1。
image.png