在 MacOS 上搭建 Kubernetes 集群环境
我们采取的技术路线是:
- 使用 homebrew 安装
kubectl
(形成: 一个针对k8s的访问接口, 用来与本地/远程集群交互)
- 使用 homebrew 安装
minikube
(形成: 一个最基础的"本地集群")
(1) 安装 kubectl
:
Bash |
---|
| # 安装
brew install kubectl
# 验证
kubectl version --client
# 查看集群
kubectl cluster-info
|
由于此时还没有本地集群, 因此kubectl
这个“访问接口”啥也找不到, 因此会报错, 诸如:
Bash |
---|
| The connection to the server <server-name:port> was refused - did you specify the right host or port?
|
不急, 我们下面就来安装本地集群
(2) 安装 minikube
:
Bash |
---|
| # 安装
brew install minikube
# 启动本地集群
minikube start
# 验证 (看看初始化默认本地集群长啥样)
kubectl get po -A
|
这时的输出应该类似:
Bash |
---|
1
2
3
4
5
6
7
8
9
10
11
12 | ❯ kubectl get po -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-66bc5c9577-hxrkr 1/1 Running 0 44m
kube-system etcd-minikube 1/1 Running 0 44m
kube-system kube-apiserver-minikube 1/1 Running 0 44m
kube-system kube-controller-manager-minikube 1/1 Running 0 44m
kube-system kube-proxy-brnbm 1/1 Running 0 44m
kube-system kube-scheduler-minikube 1/1 Running 0 44m
kube-system metrics-server-85b7d694d7-sx7rk 1/1 Running 0 30m
kube-system storage-provisioner 1/1 Running 0 44m
kubernetes-dashboard dashboard-metrics-scraper-77bf4d6c4c-vgnz7 1/1 Running 0 31m
kubernetes-dashboard kubernetes-dashboard-855c9754f9-p25fz 1/1 Running 0 31m
|
(3) 再次 kubectl cluster-info
:
输出结果类似:
Bash |
---|
| ❯ kubectl cluster-info
Kubernetes control plane is running at https://127.0.0.1:32771
CoreDNS is running at https://127.0.0.1:32771/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
|
看见URL和DNS都出来了, 说明没问题了! 本地环境配置完毕!
(4) 复盘一下:
在这一过程中, 我们会见到许多名词, 需要搞清楚它们的“物理含义”
K8s:
是一个 生产级别的系统,被部署在云服务商(如 Google GKE, Amazon EKS, Azure AKS)或公司自己的数据中心里,用来管理大规模的、正式上线的应用程序。
Minikube:
是一个 本地化的 Kubernetes 环境。它是一个轻量级的工具,可以让我们在自己的个人电脑(Windows, macOS, or Linux)上快速启动一个单节点的 Kubernetes 集群。
Minikube 就是一个 Kubernetes 集群,但它是一个简化版、非生产用途的集群。它不是 K8s 的替代品,而是为了学习和开发 K8s 应用而生的工具。
kubectl:
是我们 与 Kubernetes 集群进行交互 的主要工具。无论我们的 K8s 集群是远在云端的生产集群,还是本地的 Minikube 环境,我们都通过 kubectl 这个工具来向它下达指令。