【云原生丶Kubernetes】Kubernetes初体验

人生若只如初见,何事秋风悲画扇

前言

Kubernetes 是目前最流行的容器编排工具之一,由Google开发并维护。它提供了完整的容器编排解决方案,包括自动化部署、资源管理和调度、服务发现和负载均衡等功能。

然而,对于初学者来说,Kubernetes可能看起来非常复杂和难以理解,但是通过Minikube来使用它成本就很低了,Minikube 大大降低了学习与使用成本,通过它我们可以轻松驾驭Kubernetes

在本文中,我将带你一起安装kubectlMinikube,然后使用Minikube来体验 Kubernetes的基础功能,以便于更好的了解Kubernetes的基本概念和工作方式,并开始使用Kubernetes来管理和部署您的容器化应用程序。

安装 kubectl

⁉️ kubectl 是什么?

kubectlKubernetes的命令行工具,它提供了一种简单的方式来管理Kubernetes集群中的资源。通过kubectl,我们可以可以创建、更新、删除和查询Kubernetes集群中的资源,例如PodsServicesDeploymentsConfigMapsSecrets等。

以下是kubectl的一些主要功能:

  1. 创建资源:使用kubectl create命令可以创建新的Kubernetes资源,例如Pod、Service、Deployment等。
  2. 更新资源:使用kubectl apply命令可以更新现有的Kubernetes资源,例如修改Pod的配置文件或者更新Deployment的镜像版本。
  3. 删除资源:使用kubectl delete命令可以删除Kubernetes集群中的资源,例如删除一个Pod或者一个Deployment。
  4. 查询资源:使用kubectl get命令可以查询Kubernetes集群中的资源,例如查看所有的Pods或者一个Deployment的状态。
  5. 操作标签:使用kubectl label命令可以为Kubernetes集群中的资源添加或修改标签,以便进行更细粒度的管理和控制。

总之,kubectl是Kubernetes中非常重要的一个工具,它可以帮助用户轻松地管理Kubernetes集群中的资源,提高开发效率和降低成本。

⁉️ 通过Homebrew 安装 kubectl

⭐️ 1、brew 安装 kubectl

bash 复制代码
brew install kubectl

⭐️ 2、检查安装版本

可以通过kubectl version命令查看 kubectl 的安装版本,用于验证 kubectl 是否安装成功。

bash 复制代码
kubectl version --client

⭐️ 3、检查 kubectl 配置信息

为了让 kubectl 能发现并访问 Kubernetes 集群,当部署成功 Minikube集群时,会自动生成kubeconfig文件。

我们还可以通过获取集群状态的方法,检查是否已正确地配置了 kubectl

shell 复制代码
kubectl cluster-info

如果你看到 The connection to the server <server-name:port> was refused - did you specify the right host or port?,说明 kubectl 配置有问题,别急,安装完Minikube之后就正常了。

安装 minikube

Minikube 是一个"小而美"的 "迷你"版本 的 Kubernetes,它可执行文件仅有不到 100MB,运行镜像也不过 1GB左右,但它小小的资源占用下却干成了大事!它集成了 Kubernetes 的绝大多数功能特性,不仅有核心的容器编排功能,还有丰富的插件,例如 DashboardIngressIstioRegistry 等。

Minikube 是一个轻量级的Kubernetes本地开发环境,它可以在任何支持Docker的机器上运行。相比于完整的Kubernetes集群,minikube更加轻量级、易于安装和使用,并且不需要大量的硬件资源。

通过使用 minikube ,我们可以在不依赖于云服务提供商的情况下,快速地学习和测试Kubernetes的各种功能。帮助开发者在本地环境中快速地进行Kubernetes开发和测试,提高开发效率和降低学习成本。

以下是minikube的一些优势:

  1. 快速启动:minikube可以在几秒钟内启动一个本地的Kubernetes集群,这使得开发者可以快速地进行开发和测试。
  2. 简单易用:minikube提供了一个简单的命令行界面,使得用户可以轻松地创建和管理Kubernetes集群。
  3. 跨平台支持:minikube可以在Windows、MacOS和Linux等操作系统上运行,这使得用户可以在不同的平台上进行开发和测试。
  4. 独立性:minikube是一个独立的应用程序,它不需要依赖于其他软件或服务,这使得它更加稳定和可靠。
  5. 可扩展性:虽然minikube是一个轻量级的Kubernetes集群,但是它可以通过添加更多的节点来扩展集群的规模,以满足更大的负载需求。

⭐️ 1、安装 minikube

Kubernetes官网提供了多种安装方法, 你可以选择任意一种方式来进行安装。

我们通过Homebrew的方式来进行安装。

bash 复制代码
brew install minikube

⭐️ 2、查看minikube版本

安装成功后,我们通过 minikube version 命令检验一下安装的版本。

bash 复制代码
minikube version

⭐️ 3、运行 minikube

minikube 安装成功后,我们就可以运行它了!通过 start命令。

minikube start 命令用于启动 Minikube 集群。它会在本地计算机上创建一个虚拟机,并在其中运行 Kubernetes 集群。

在运行 minikube start 命令时,它将执行以下步骤:

  1. 检查 Minikube 是否已经安装,并下载最新版本的 Minikube(如果需要)。

  2. 检查虚拟化驱动程序是否可用,并下载和配置所需的虚拟化驱动程序(如果需要)。

  3. 创建一个虚拟机,并在其中运行 Kubernetes 集群。

  4. 配置 kubectl 命令行工具,以便它可以与 Minikube 集群进行通信。

    minikube start

⭐️ 4、检查 Minikube 的状态

minikube status 命令用于检查 Minikube 的状态。它将显示 Minikube 的当前状态以及kubeletapiserver等组件的运行信息。

minikube status

⭐️ 5、获取 Kubernetes 集群中所有节点的状态信息

kubectl get nodes 命令用于获取 Kubernetes 集群中所有节点的状态信息。包含了集群中所有节点的名称、状态、角色、版本、内存和 CPU 使用情况等信息。

bash 复制代码
kubectl get nodes

⭐️ 6、获取 Kubernetes 集群信息

kubectl cluster-info 命令用于获取 Kubernetes 集群的信息。

⭐️ 7、停止minikube

minikube stop 命令用于停止 Minikube 集群。在运行 minikube stop 命令时,它将停止运行在本地计算机上的虚拟机,并关闭其中运行的 Kubernetes 集群。

minikube stop

Minikube 初体验

Kubernetes Pod 是由一个或多个为了管理和联网而绑定在一起的容器构成的组。

Kubernetes Deployment 检查 Pod 的健康状况,并在 Pod 中的容器终止的情况下重新启动新的容器。 Deployment 是管理 Pod 创建和扩展的推荐方法。

⭐️ 1、创建 Deployment

使用 kubectl create 命令创建管理 Pod 的 Deployment。该 Pod 根据提供的 Docker 镜像运行容器。

这里我们运行了k8s提供的公共测试镜像服务,并命名 deployment 为 hello-node。

shell 复制代码
# 运行包含 Web 服务器的测试容器镜像
kubectl create deployment hello-node --image=registry.k8s.io/e2e-test-images/agnhost:2.39 -- /agnhost netexec --http-port=8080

⭐️ 2、查看Pod状态信息

kubectl get pods 命令用于获取 Kubernetes 集群中所有 Pod 的状态信息。在运行 kubectl get pods 命令时,它将返回一个表格,其中包含了集群中所有 Pod 的名称、所属命名空间、状态、重启次数、启动时间等信息。

bash 复制代码
kubectl get pods

⭐️ 3、创建Service

在 Kubernetes 集群中创建一个 Service,并将其暴露为 NodePort 类型的服务,之后便可以访问在 Deployment 中运行的 Pod 的指定端口。

bash 复制代码
kubectl expose deployment/hello-node --type="NodePort" --port 8080

这个命令的含义是:

  1. kubectl expose 命令创建一个 Service 对象。
  2. --port 参数指定了 Service 对象要监听的端口号,这里是 8080
  3. --type="NodePort" 参数,Kubernetes 将为 Service 对象分配一个节点可访问的端口号

⭐️ 4、查看Service

kubectl get services 命令用于获取 Kubernetes 集群中所有 Service 对象的状态信息。

返回结果包含了集群中所有 Service 对象的名称、所属命名空间、类型、集群 IP 地址、端口等信息。

在输出的表格中,每一行表示一个 Service,每一列表示一个 Service 的属性。以下是 kubectl get services 命令输出的表格中可能包含的列:

  • NAME: Service 的名称。
  • TYPE: Service 的类型,例如 ClusterIP、NodePort 或 LoadBalancer。
  • CLUSTER-IP: Service 的集群 IP 地址。
  • EXTERNAL-IP: Service 的外部 IP 地址(如果有)。
  • PORT(S): Service 所公开的端口和协议。
  • AGE: Service 的创建时间。
bash 复制代码
kubectl get services

我们也可以指定查看 hello-node Service的信息

kubectl get services hello-node

⭐️ 5、Scale扩缩容

kubectl scale 命令用于扩展或缩小 Kubernetes 集群中的 Deployment、ReplicaSet 或 StatefulSet。它允许您动态地增加或减少正在运行的 Pod 的数量,以满足应用程序的负载需求。

执行如下命令,将扩展 Pod 数量为3个。

kubectl scale deployment hello-node --replicas=3

现在你有3个应用副本了, 每个都在群集上独立运行,并能负载均衡他们之间的流量。

我们再来查看一下 deployment 和 pod 的情况。

bash 复制代码
kubectl get deployment

kubectl get pods

Minikube 可视化

minikube dashboard 命令用于打开 Minikube 集群的可视化仪表板。在运行 minikube dashboard 命令时,它将启动一个 Web 服务器,并在默认浏览器中打开一个 Web 页面,显示 Minikube 集群的状态和详细信息。这使得管理和监视 Kubernetes 集群变得更加简单和直观。

Minikube 仪表板是一个基于 Web 的用户界面,可以让用户通过图形化方式管理 Kubernetes 集群。它提供了一些有用的功能,例如:

  • 查看 Kubernetes 集群中的节点、Pod、服务等资源的详细信息。
  • 查看 Kubernetes 集群的事件和日志。
  • 创建、编辑和删除 Kubernetes 资源。
  • 运行和监视应用程序。

⁉️ dashboard插件并不是默认启动的,需要我们手动开启

⭐️ 1、启用 dashboard插件

bash 复制代码
minikube addons enable dashboard

⭐️ 2、打开可视化面板

minikube dashboard 命令用于打开 Minikube 集群的可视化仪表板。

bash 复制代码
minikube dashboard

自动弹出浏览器控制台

好啦,本文到此结束啦,minikube 这个小巧的 Kubernetes 还挺简单的,是不?

参考:Kubernetes官网


🎉 如果喜欢这篇文章,点赞👍 收藏关注 ✅ 哦,创作不易,感谢!😀

相关推荐
无名之逆4 小时前
云原生(Cloud Native)
开发语言·c++·算法·云原生·面试·职场和发展·大学期末
Richardlygo5 小时前
(k8s)Kubernetes部署Promehteus
云原生·容器·kubernetes
炸裂狸花猫6 小时前
Kubernetes从零到精通(12-Ingress、Gateway API)
容器·kubernetes·gateway
Lill_bin8 小时前
JVM内部结构解析
jvm·后端·spring cloud·微服务·云原生·ribbon
青云交9 小时前
大数据新视界 --大数据大厂之Kubernetes与大数据:容器化部署的最佳实践
数据库·kubernetes·容器编排·资源管理·大数据处理·扩展性、故障恢复·存储持久化·监控、日志管理、性能提升
二进制杯莫停9 小时前
初识zookeeper
分布式·zookeeper·云原生
StevenZeng学堂10 小时前
【Kubernetes笔记】为什么DNS解析会超时?
网络协议·docker·云原生·kubernetes
爱吃龙利鱼1 天前
nginx实现https安全访问的详细配置过程
运维·nginx·安全·云原生·https
大白菜和MySQL1 天前
rockylinux9.4单master节点k8s1.28集群部署
云原生·容器·kubernetes
向往风的男子1 天前
【从问题中去学习k8s】k8s中的常见面试题(夯实理论基础)(三十)
学习·容器·kubernetes