跳转至

在 MacOS 上搭建 Kubernetes 集群环境

我们采取的技术路线是:

  1. 使用 homebrew 安装 kubectl (形成: 一个针对k8s的访问接口, 用来与本地/远程集群交互)
  2. 使用 homebrew 安装 minikube (形成: 一个最基础的"本地集群")

(1) 安装 kubectl:

Bash
1
2
3
4
5
6
# 安装
brew install kubectl
# 验证
kubectl version --client
# 查看集群
kubectl cluster-info

由于此时还没有本地集群, 因此kubectl这个“访问接口”啥也找不到, 因此会报错, 诸如:

Bash
1
The connection to the server <server-name:port> was refused - did you specify the right host or port?

不急, 我们下面就来安装本地集群

(2) 安装 minikube:

Bash
1
2
3
4
5
6
# 安装
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
1
2
3
4
5
 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 这个工具来向它下达指令。