2024年最全零基础搭建 Kubernetes 集群(1),【绝对干货】

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

将 Worker 节点加入集群

  • 准备 Worker 节点环境
    Worker 节点同样需要安装 Docker、kubelet、kubeadm。
  • 加入集群操作
    在每个 Worker 节点上运行之前在 Master 节点上得到的 kubeadm join 命令。
  • 确认节点加入成功
    回到 Master 节点上,运行以下命令查看所有节点的状态:
kubectl get nodes

这个命令会列出集群中所有的节点,并显示它们的状态。如果一切顺利,你应该能看到你的 Worker 节点状态为 Ready

当然可以!假设你已经跟随上述步骤成功地将 Worker 节点加入到集群中,运行 kubectl get nodes 命令之后,你可能会看到类似于下面的输出:

NAME        STATUS   ROLES    AGE   VERSION
master      Ready    master   48m   v1.20.1
worker-01   Ready    <none>   30m   v1.20.1
worker-02   Ready    <none>   28m   v1.20.1

这里面包含了几列信息:

NAME: 节点的名字,通常是你在创建云实例时定义的名字或者是局域网内的主机名。

STATUS: 显示 Ready 表示该节点已经准备好接受 Pods 的运行。

ROLES: 显示节点的角色,比如 masterworker;如果为空,则默认为 worker

AGE: 节点加入集群的时间。

VERSION: 节点上运行的 Kubernetes 版本。

这个输出告诉我们,集群中有一个 Master 节点和两个 Worker 节点,它们都已经准备就绪,可以开始部署应用程序了,这样,我们的 Kubernetes 集群就算是搭建成功了!

&nbsp

5、部署Pod网络

让 Kubernetes 集群节点彼此通信的关键在于 Pod 网络,每个 Pod 都应该能够连接其他 Pod,无论它们在哪个节点上,为此,我们需要为集群安装一个网络插件。

选择合适的网络插件
有多种网络插件可供选择,例如 Calico、Flannel、Weave Net 等,每种插件都有自己的特点,你可以根据自己的需求选择合适的。

这里以 Calico 为例,部署命令可能如下:

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

运行该命令后,集群会下载 Calico 组件并部署在集群中,命令执行成功后,你可能看不到立即的输出,但是你可以通过运行以下命令检查 Pod 网络的部署状态:

kubectl get pods --all-namespaces

这个命令会显示所有命名空间的 Pods,其中包括 Calico 网络插件的 Pods。如果一切正常,你将看到类似于以下的输出:

NAMESPACE     NAME                                       READY   STATUS    RESTARTS   AGE
kube-system   calico-kube-controllers-xxxxxxxxxx-xxxxx   1/1     Running   0          5m
kube-system   calico-node-xxxxx                          1/1     Running   0          5m
kube-system   calico-node-yyyyy                          1/1     Running   0          5m
...

6、测试集群

为了验证我们的集群是否能够正常工作,我们可以部署一个简单的测试应用。

部署一个 NGINX 应用
尝试使用以下命令部署一个 NGINX 的 Deployment:

kubectl create deployment nginx --image=nginx

执行该命令后,Kubernetes 会创建一个名为 nginx 的 Deployment,并从 Docker Hub 拉取最新的 NGINX 镜像。这条命令的输出会是:

deployment.apps/nginx created

然后,你可以通过下面的命令检查 Pod 的状态:

kubectl get pods

在几秒钟之后,你应该会看到 NGINX Pod 的状态变为 Running

NAME                     READY   STATUS    RESTARTS   AGE
nginx-86c57db685-9vldk   1/1     Running   0          30s

部署 Service 来暴露应用

为了能够从集群外部访问这个 NGINX 应用,我们需要创建一个 Service:

kubectl expose deployment nginx --port=80 --type=NodePort

执行该命令后,Kubernetes 会创建一个 Service 来暴露 NGINX Deployment。这条命令的输出会是:

service/nginx exposed

使用以下命令查找暴露的 NGINX Service 的外部端口:

kubectl get service nginx

输出会显示 NodePort 的值,类似于:

NAME    TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
nginx   NodePort   10.100.93.21    <none>        80:30820/TCP   115s

现在你可以通过服务分配的 NodePort,从集群外部通过 URL http://<Cluster-IP>:<NodePort> 来访问 NGINX 服务。

配置 Ingress 来进行路由

如果你希望使用域名和路径来访问应用,还可以配置 Ingress 来进行路由,这通常需要一个 Ingress 控制器和一个 Ingress 资源。
Ingress 控制器是集群中的一个 Pod,它负责实现 Ingress,通常用 NGINX 可以作为一个好选择,而 Ingress 资源定义了从外部请求到内部服务的访问规则。

你可以按照官方文档或社区提供的教程来设置你的 Ingress 控制器和资源。

现在,我们已经成功部署并测试了一个基本应用,这验证了我们的 Kubernetes 集群能够运行 Pod 并且对外提供服务。

7、搭建 Dashboard

Kubernetes Dashboard 是一个基于网页的 Kubernetes 用户界面。你可以用它来部署容器化应用到集群中,也可以对它们进行故障排除,以及管理集群资源。它允许用户配置和管理应用以及查看各种信息。

&nbsp

安装 Kubernetes Dashboard

首先,你需要部署 Dashboard UI。可以通过下面的命令来创建 Dashboard:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml

运行命令后,系统可能不会立刻返回信息,但你可以运行下面的命令来检查 Dashboard 的部署状态:

kubectl get pods --namespace kubernetes-dashboard

等待所有的 Pods 状态为 Running。输出将类似于:

NAME                                         READY   STATUS    RESTARTS   AGE
kubernetes-dashboard-78c79f97b4-6glb2        1/1     Running   0          2m
dashboard-metrics-scraper-7b59f7d4df-xb8xg   1/1     Running   0          2m

访问 Kubernetes Dashboard

为了访问 Dashboard,你将需要创建一个代理服务器。可以使用下面的命令:

kubectl proxy

这条命令会启动一个代理服务器,允许你通过浏览器直接访问 Dashboard。

现在,你可以在浏览器中输入以下 URL 来访问 Dashboard UI:

http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/

默认情况下,你可能还需要一个令牌(Token)来登录。你可以通过以下命令来获取一个令牌:

kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')

复制返回的令牌,并在登录界面粘贴它以完成身份验证。

8、搭建注意事项

在搭建 Kubernetes 集群时,你需要注意一些事项:

  • 版本兼容性检查:确保你安装的 Kubernetes 版本与其他组件兼容,比如 Docker 或者网络插件。
  • 安全配置和最佳实践:使用 RBAC(基于角色的访问控制)来控制对集群资源的访问,并在 Pod 中实施安全的容器运行时实践。
  • 资源分配和管理:合理分配资源限制和请求,以保证 Pod 之间的资源分配公平,同时避免资源浪费。
  • 集群日志和监控:部署日志和监控工具如 Prometheus 和 Grafana,以跟踪集群的运行状况。

9、集群的维护和升级

集群的长期健康需要定期的维护和升级。

  • 集群的日常维护:包括监控集群健康、备份 etcd 数据以及清理不必要的资源。
  • 如何升级集群:你可以使用 kubeadm 来升级集群。这通常涉及升级 master 节点上的各种组件,然后逐个升级 worker 节点。

10、问题排查

当集群出现问题时,你需要知道如何进行排查。

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

-1715410002329)]
[外链图片转存中…(img-Nbt7Zc2e-1715410002329)]
[外链图片转存中…(img-ECHELLbX-1715410002330)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

  • 13
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值