【发布时间】:2022-01-11 05:19:06
【问题描述】:
首先,我使用浏览器中的 GCP GUI 控制台创建了一个 GKE Autopilot 集群,并使用默认设置,因此我尝试使用 kubectl apply -f thisfile.yaml 应用我的部署:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 3
selector:
matchLabels:
run: my-app
template:
metadata:
labels:
run: my-app
spec:
containers:
- name: hello-app
image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
之后,我一直将其重写为 Terraform 文件,结果如下:
resource "google_container_cluster" "my_gke" {
name = "my-gke"
enable_autopilot = "true"
location = "southamerica-east1"
}
data "google_client_config" "default" {}
provider "kubernetes" {
host = "https://${google_container_cluster.my_gke.endpoint}"
token = data.google_client_config.default.access_token
cluster_ca_certificate = base64decode(google_container_cluster.my_gke.master_auth[0].cluster_ca_certificate)
}
resource "kubernetes_deployment" "my_deployment" {
metadata {
name = "my-app"
}
spec {
replicas = 2
selector {
match_labels = {
run = "my-app"
}
}
template {
metadata {
labels = {
run = "my-app"
}
}
spec {
container {
image = "us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0"
name = "hello-app"
}
}
}
}
lifecycle {
ignore_changes = [
metadata[0].annotations,
metadata[0].resource_version,
spec[0].template[0].spec[0].container[0].security_context
]
}
}
问题如下:
- 当我将它与
kubectl apply -f thisfile.yaml一起应用时,使用 YAML 表示法,一切都可以正常部署。 - 当我删除集群并使用 Terraform 应用所有内容时,第一个修订版在一段时间后可以正常应用,但部署的下一个修订版继续导致 GCP 控制台打印“不可调度”错误,声称“cpu 不足”和/或“内存不足”
PS。我之前已经尝试在 PodSpec 中设置资源的限制和请求,但没有任何改变。
我是 GKE 的新手,现在对我来说一切看起来都很不可靠。我做错了什么?
【问题讨论】:
-
也许你必须先删除旧的部署。 kubectl get deployment --all-namespaces 或 kubectl get pods --all-namespaces #获取概览,然后删除不需要的。
标签: kubernetes google-cloud-platform terraform google-kubernetes-engine