hxz
发布于 2022-12-25 / 37 阅读
0

初识K8S

k8s介绍

Kubernetes中文官网:Kubernetes

GitHub:github.com/kubernetes/kubernetes

Kubernetes简称为K8s,是用于自动部署、扩缩和管理容器化应用程序的开源系统,起源于Google 集群管理工具Borg。

功能介绍

  1. 容器化的部署和管理

    1. k8s通过pod对象管理一组容器的生命周期,每个pod内部可以运行一个或者多个容器,他们共享网络和存储资源。k8s负责确保容器在预期状态下运行,包括启动、停止、更新等操作。

  2. 自动扩展(扩缩实例数量)

    1. K8s可以根据CPU使用率、内存占用等指标自动增加或减少Pod实例

  3. 服务发现和负载均衡

    1. K8s利用etcd作为服务发现机制,将Pod的网络地址注册到Service下;

    2. 可能依赖nginx实现负载均衡,也可以支持基于Round Robin算法的负载均衡

  4. 自我修复(容灾机制)

    1. 如果某个Pod发生异常退出,K8s会自动重新启动该Pod或者在其他节点上重新调度一个新的Pod。此外,K8s还支持Pod的健康检查机制,可以定期检查容器的健康状况,并根据检查结果执行相应的操作。

  5. 声明式配置(读取配置文件)

    1. K8s会根据用户提供的配置文件(如YAML文件),自动创建和管理相应的对象,确保集群状态与配置文件保持一致。

  6. 存储编排

    1. 用户可以通过配置文件定义所需的存储容量,K8s会负责将存储卷映射到相应的Pod中,实现数据的持久化存储。

  7. 秘钥和配置管理

    1. K8s通过Secret对象来管理敏感数据,如密码、密钥等。用户可以将敏感信息存储在Secret对象中,并在Pod的定义中引用。

常用命令

kubectl 在测试中较为常用的命令记录

  1. 获取资源信息

    1. 获取所有 Pod:kubectl get pods

    2. 获取所有 Service:kubectl get services

    3. 获取特定 Namespace 中的 Deployment:kubectl get deployment -n <namespace>

  2. 应用或更新资源配置

    1. 应用或更新一个 Deployment:kubectl apply -f deployment.yaml

    2. 应用或更新一个 ConfigMap:kubectl apply -f configmap.yaml

  3. 删除资源

    1. 删除一个 Pod:kubectl delete pod <pod-name>

    2. 删除一个 Service:kubectl delete service <service-name>

  4. 在容器内执行命令

    1. 在 Pod 内的一个容器中执行命令:kubectl exec -it <pod-name> --container <container-name> -- /bin/sh

  5. 获取容器日志

    1. 查看 Pod 内容器的日志:kubectl logs <pod-name>

  6. 调整副本数

    1. 将 Deployment 的副本数缩放为 3:kubectl scale deployment <deployment-name> --replicas=3

  7. 查看节点信息

    1. 获取节点列表:kubectl get nodes