我正在使用terraform向我的GKE节点添加启动脚本
provider "google" {
project = var.project
region = var.region
zone = var.zone
credentials = "google-key.json"
}
terraform {
backend "gcs" {
bucket = "tf-state-bucket-devenv"
prefix = "terraform"
credentials = "google-key.json"
}
}
resource "google_container_cluster" "primary" {
name = var.kube-clustername
location = var.zone
remove_default_node_pool = true
initial_node_count = 1
master_auth {
username = ""
password = ""
client_certificate_config {
issue_client_certificate = false
}
}
}
resource "google_container_node_pool" "primary_preemptible_nodes" {
name = var.kube-poolname
location = var.zone
cluster = google_container_cluster.primary.name
node_count = var.kube-nodecount
node_config {
preemptible = var.kube-preemptible
machine_type = "n1-standard-1"
disk_size_gb = 10
disk_type = "pd-standard"
metadata = {
disable-legacy-endpoints = "true",
startup_script = "cd /mnt/stateful_partition/home && echo hi > test.txt"
}
oauth_scopes = [
"https://www.googleapis.com/auth/logging.write",
"https://www.googleapis.com/auth/monitoring",
]
}
}
当我进入GCP界面时,选择节点并查看元数据,我可以看到其中的键/值
metadata_startup_script
#!/bin/bash sudo su && cd /mnt/stateful_partition/home && echo hi > test.txt
但是,在节点上运行以下命令时-
sudo google_metadata_script_runner-脚本类型启动- -调试
我得到了以下内容-
startup-script: INFO Starting startup scripts.
startup-script: INFO No startup scripts found in metadata.
startup-script: INFO Finished running startup scripts.
有人知道为什么该脚本无法运行/显示吗? -是因为它是GKE节点,而google不允许您编辑它们,所以我实际上在他们的文档中找不到他们具体说的任何内容。
答案 0 :(得分:1)
您不能指定要在GKE节点上运行的启动脚本。该节点具有内置的启动序列,以初始化该节点并将其加入集群,并确保该节点正常运行(例如,确保当您请求100个节点时获得100个功能节点),您不能向该节点添加其他逻辑。启动顺序。
作为替代,您可以创建一个在所有节点上运行的DaemonSet,以执行节点级初始化。这样的优点之一是,如果您想更改它们的配置方式,则可以对其DaemonSet进行调整,然后将其重新应用到现有节点(而无需重新创建它们)。
答案 1 :(得分:0)
用此metadata_startup_script
替换此元数据键名称startup_script
。
此外,您的启动脚本以root用户身份运行。您不需要执行sudo su