--
:
--
:
--
hugo-teek is loading...
实战-terraform方式部署k8s集群-20240531(测试成功)
最后更新于:
实战:terraform方式部署k8s集群-2024.5.31(测试成功)
参考文档
《00-devops8基础环境配置(重要)》 https://onedayxyy.cn/docs/devops8-basic-test-environment


次文档步骤详细,安装包完成,可测试成功。
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 ~]#
📡
👤
作者:
余温Gueen
🌐
版权:
本站文章除特别声明外,均采用
CC BY-NC-SA 4.0
协议,转载请注明来自
余温Gueen Blog!
推荐使用微信支付

推荐使用支付宝
