K8S介绍和基本操作

K8S介绍和基本操作

简介

Kubernetes 是一个可移植、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化。 Kubernetes 拥有一个庞大且快速增长的生态,其服务、支持和工具的使用范围相当广泛。

Kubernetes 这个名字源于希腊语,意为“舵手”或“飞行员”。k8s 这个缩写是因为 k 和 s 之间有八个字符的关系。 Google 在 2014 年开源了 Kubernetes 项目。 Kubernetes 建立在 Google 大规模运行生产工作负载十几年经验的基础上, 结合了社区中最优秀的想法和实践。

Kubernetes 为你提供:

  • 服务发现和负载均衡

    Kubernetes 可以使用 DNS 名称或自己的 IP 地址来暴露容器。 如果进入容器的流量很大, Kubernetes 可以负载均衡并分配网络流量,从而使部署稳定。

  • 存储编排

    Kubernetes 允许你自动挂载你选择的存储系统,例如本地存储、公共云提供商等。

  • 自动部署和回滚

    你可以使用 Kubernetes 描述已部署容器的所需状态, 它可以以受控的速率将实际状态更改为期望状态。 例如,你可以自动化 Kubernetes 来为你的部署创建新容器, 删除现有容器并将它们的所有资源用于新容器。

  • 自动完成装箱计算

    你为 Kubernetes 提供许多节点组成的集群,在这个集群上运行容器化的任务。 你告诉 Kubernetes 每个容器需要多少 CPU 和内存 (RAM)。 Kubernetes 可以将这些容器按实际情况调度到你的节点上,以最佳方式利用你的资源。

  • 自我修复

    Kubernetes 将重新启动失败的容器、替换容器、杀死不响应用户定义的运行状况检查的容器, 并且在准备好服务之前不将其通告给客户端。

  • 密钥与配置管理

    Kubernetes 允许你存储和管理敏感信息,例如密码、OAuth 令牌和 ssh 密钥。 你可以在不重建容器镜像的情况下部署和更新密钥和应用程序配置,也无需在堆栈配置中暴露密钥。

K8S架构图

K8S主要概念

见该知乎文章

kubectl指令安装

Linux

在 Linux 系统中安装并设置 kubectl

Macos

在 macOS 系统上安装和设置 kubectl

Windows

在 Windows 上安装 kubectl

kubectl常用指令

get(最常用)

使用 get 命令可以获取当前集群中可用的资源列表,包括:

  • Namespace
  • Pod
  • Node
  • Deployment
  • Service
  • ReplicaSet

kubectl get nodes

nodes

kubectl get ns

ns

kubectl get pod

pod

kubectl -n openmmlab-staging get pod

查看openmmlab-staging命名空间下的pod

ns-pod

logs(最常用)

ogs 命令可以提供 Kubernetes 中 Pod 的更多详细信息。了解这种区别可以帮助开发者更好地对应用程序内部以及 Kubernetes 内部发生的问题,并进行故障排除

kubectl -n openmmlab-staging logs -f –tail 100 aide-be-deploy-86f74f4bb4-gh9js

查看openmmlab-staging命名空间下aide-be-deploy-86f74f4bb4-gh9js容器的日志,显示100行

logs

scale(常用)

kubectl -n openmmlab-staging scale deploy aide-be-deploy –replicas=0

将openmmlab-staging命名空间下aide-be-deploy容器个数设置为0

kubectl -n openmmlab-staging scale deploy aide-be-deploy –replicas=1

将openmmlab-staging命名空间下aide-be-deploy容器个数设置为1

这两个操作==重启该服务

config(常用)

kubectl config get-contexts

config

create

可以查询资源后,下一步是创建资源。我们可以用 kubectl 在集群中创建任何类型的资源,包括:

  • Service
  • Cronjob
  • Deployment
  • Job
  • Namespace(ns)其中,一些资源的创建需要设置配置文件、命名空间以及资源名称。例如,创建命名空间就需要一个额外参数来指定命名空间。
1
2
$ kubectl create ns hello-there
namespace/hello-there created

edit

当我们创建好资源后,如果需要修改,该怎么办?这时候就需要 kubectl edit 命令了。我们可以用这个命令编辑集群中的任何资源。它会打开默认文本编辑器。如果我们要编辑现有的 cron job,则可以执行:

1
$ kubectl edit cronjob/my-existing-cron

delete

学会了以上命令后,下面我们将进行删除操作。刚刚编辑的 cronjob 是两个 cronjobs 之一,现在我们删除整个资源。

1
2
3
$ kubectl delete cronjob my-existing-cron
cronjob.batch "my-existing-cron" deleted
12

需要注意的是,如果不知道资源是否有关联信息,最好不要删除。因为删除后无法恢复,只能重新创建。

apply

上文提到,某些命令需要配置文件,而 apply 命令可以在集群内调整配置文件应用于资源。虽然也可以通过命令行 standard in (STNIN) 来完成,但 apply 命令更好一些,因为它可以让你知道如何使用集群,以及要应用哪种配置文件。

1
2
3
4

$ kubectl apply -f commands.yaml
serviceaccount/tiller created
clusterrolebinding.rbac.authorization.k8s.io/tiller created

K8S可视化工具Lens简单介绍

Lens 是一个强大的 kubernetes IDE。可以实时查看 kubernetes 集群状态,比如 Pod实时日志查看、集群Events实时查看、集群故障排查等。有了 Lens,不在需要敲打很长的 kubectl 命令,只要使用鼠标点击几下,非常便捷。

Lens 支持多平台安装,目前支持 LinuxMacOSWindows

  • 用户体验性和可用性非常好
  • 多集群管理;支持数百个集群
  • 独立应用程序;无需在集群中安装任何东西
  • 集群状态实时可视化
  • 内置 Prometheus 提供资源利用率图表和历史趋势图表
  • 提供终端访问节点和容器
  • 性能经过优化,可应用于大规模集群(已在25k pod的集群进行了测试)
  • 完全支持 Kubernetes RBAC

界面展示

UI

Lens客户端下载

Lens | The Kubernetes IDE

download

激活

登陆账号后需要用户订阅,可以选择激活免费版然后就可以使用了

active

free

添加config配置

点击add cluster将原本放在/.kube下的config文件copy过来

add

copy config

常见操作

查看nodes

nodes

查看不同namespace下的pods

pods-ns

查看某个pod的日志或者直接连接该pod的shell

log and shell

新建一个terminal终端

ternimal

总结

Lens可以可视化的监控k8s集群的所有数据,可以便捷的查看日志,进行pod的伸缩等,最重要的是界面UI非常好看,好评!


K8S介绍和基本操作
https://shouldbeldy.github.io/2023/02/04/K8S介绍和基本操作/
作者
Daoyu Lei
发布于
2023年2月4日
许可协议