hugo-teek is loading...

实战-terraform方式部署k8s集群-20240531(测试成功)

最后更新于:

实战:terraform方式部署k8s集群-2024.5.31(测试成功)

参考文档

《00-devops8基础环境配置(重要)》 https://onedayxyy.cn/docs/devops8-basic-test-environment

image-20240526144235306

image-20240531025303781

次文档步骤详细,安装包完成,可测试成功。

kind.tf内容

  1[root@devops8 k8s]#cat kind.tf 
  2# terraform用到的providers
  3terraform {
  4  required_providers {
  5    kind = {
  6      source  = "tehcyx/kind"
  7      version = "0.0.12"
  8    }
  9    null = {
 10      source  = "hashicorp/null"
 11      version = "3.1.1"
 12    }
 13  }
 14}
 15
 16provider "kind" {}
 17
 18# 此变量指定kubeconfig的文件输出路径
 19variable "kind_cluster_config_path" {
 20  type    = string
 21  default = "~/.kube/config"
 22}
 23
 24# 此输出会在控制台打印kubeconfig内容
 25output "kubeconfig" {
 26  value = kind_cluster.default.kubeconfig
 27}
 28
 29# 定义k8s集群
 30resource "kind_cluster" "default" {
 31  name            = "devopscluster"                             # 集群名称
 32  node_image      = "kindest/node:v1.24.0"                      # kind镜像
 33  kubeconfig_path = pathexpand(var.kind_cluster_config_path)    # kubeconfig路径
 34  wait_for_ready  = true  # 等待集群节点ready
 35  
 36  # kind配置文件
 37  kind_config {
 38    kind        = "Cluster"
 39    api_version = "kind.x-k8s.io/v1alpha4"
 40    
 41    # Control节点配置
 42    node {
 43      role = "control-plane"
 44      kubeadm_config_patches = [
 45        <<-EOT
 46          kind: InitConfiguration
 47          imageRepository: registry.aliyuncs.com/google_containers
 48          networking:
 49            serviceSubnet: 10.0.0.0/16
 50            apiServerAddress: "0.0.0.0"
 51          nodeRegistration:
 52            kubeletExtraArgs:
 53              node-labels: "ingress-ready=true"
 54          ---
 55          kind: KubeletConfiguration
 56          cgroupDriver: systemd
 57          cgroupRoot: /kubelet
 58          failSwapOn: false
 59        EOT
 60      ]
 61
 62      extra_port_mappings {
 63        container_port = 80
 64        host_port      = 80
 65      }
 66      extra_port_mappings {
 67        container_port = 443
 68        host_port      = 443
 69      }
 70      extra_port_mappings {
 71        container_port = 6443
 72        host_port      = 6443
 73      }
 74    }
 75
 76    # worker 节点1
 77    node {
 78      role = "worker"
 79    }
 80
 81    # worker 节点2
 82    node {
 83      role = "worker"
 84    }
 85  }
 86}
 87
 88# null_resource 用于执行shell命令
 89# 此步骤用于加载ingress镜像并部署ingress
 90resource "null_resource" "wait_for_instatll_ingress" {
 91  triggers = {
 92    key = uuid()
 93  }
 94
 95  provisioner "local-exec" {
 96    command = <<EOF
 97      sleep 5  
 98      kind load  docker-image k8s.gcr.io/ingress-nginx/controller:v1.2.0 --name devopscluster
 99      kind load  docker-image k8s.gcr.io/ingress-nginx/kube-webhook-certgen:v1.1.1  --name devopscluster
100      kubectl create ns ingress-nginx
101      kubectl apply -f ingress.yaml -n ingress-nginx
102      printf "\nWaiting for the nginx ingress controller...\n"
103      kubectl wait --namespace ingress-nginx \
104        --for=condition=ready pod \
105              --selector=app.kubernetes.io/component=controller \
106        --timeout=90s #这里等待了90s
107    EOF
108  }
109
110  depends_on = [kind_cluster.default]
111}

结果

 1[root@devops8 ~]#kind get clusters
 2devopscluster
 3[root@devops8 ~]#kubectl get node
 4NAME                          STATUS   ROLES           AGE     VERSION
 5devopscluster-control-plane   Ready    control-plane   7h14m   v1.24.0
 6devopscluster-worker          Ready    <none>          7h14m   v1.24.0
 7devopscluster-worker2         Ready    <none>          7h14m   v1.24.0
 8[root@devops8 ~]#kubectl get po -A
 9NAMESPACE            NAME                                                  READY   STATUS      RESTARTS   AGE
10ingress-nginx        ingress-nginx-admission-create-kv69f                  0/1     Completed   0          7h14m
11ingress-nginx        ingress-nginx-admission-patch-2swjx                   0/1     Completed   0          7h14m
12ingress-nginx        ingress-nginx-controller-59c96b9cb7-95rd6             1/1     Running     0          7h14m
13kube-system          coredns-6d4b75cb6d-czwnm                              1/1     Running     0          7h14m
14kube-system          coredns-6d4b75cb6d-scvnz                              1/1     Running     0          7h14m
15kube-system          etcd-devopscluster-control-plane                      1/1     Running     0          7h15m
16kube-system          kindnet-7dmf6                                         1/1     Running     0          7h14m
17kube-system          kindnet-d2x64                                         1/1     Running     0          7h14m
18kube-system          kindnet-mc4qm                                         1/1     Running     0          7h14m
19kube-system          kube-apiserver-devopscluster-control-plane            1/1     Running     0          7h15m
20kube-system          kube-controller-manager-devopscluster-control-plane   1/1     Running     0          7h15m
21kube-system          kube-proxy-bvf7d                                      1/1     Running     0          7h14m
22kube-system          kube-proxy-lbt7f                                      1/1     Running     0          7h14m
23kube-system          kube-proxy-s2lsg                                      1/1     Running     0          7h14m
24kube-system          kube-scheduler-devopscluster-control-plane            1/1     Running     0          7h15m
25kube-system          nfs-subdir-external-provisioner-5846f745b4-8sx2n      1/1     Running     0          7h13m
26local-path-storage   local-path-provisioner-9cd9bd544-s2grg                1/1     Running     0          7h14m
27[root@devops8 ~]#
推荐使用微信支付
微信支付二维码
推荐使用支付宝
支付宝二维码
最新文章

文档导航