k8s介绍
Kubernetes中文官网:Kubernetes
GitHub:github.com/kubernetes/kubernetes
Kubernetes简称为K8s,是用于自动部署、扩缩和管理容器化应用程序的开源系统,起源于Google 集群管理工具Borg。
功能介绍
容器化的部署和管理
k8s通过pod对象管理一组容器的生命周期,每个pod内部可以运行一个或者多个容器,他们共享网络和存储资源。k8s负责确保容器在预期状态下运行,包括启动、停止、更新等操作。
自动扩展(扩缩实例数量)
K8s可以根据CPU使用率、内存占用等指标自动增加或减少Pod实例
服务发现和负载均衡
K8s利用etcd作为服务发现机制,将Pod的网络地址注册到Service下;
可能依赖nginx实现负载均衡,也可以支持基于Round Robin算法的负载均衡
自我修复(容灾机制)
如果某个Pod发生异常退出,K8s会自动重新启动该Pod或者在其他节点上重新调度一个新的Pod。此外,K8s还支持Pod的健康检查机制,可以定期检查容器的健康状况,并根据检查结果执行相应的操作。
声明式配置(读取配置文件)
K8s会根据用户提供的配置文件(如YAML文件),自动创建和管理相应的对象,确保集群状态与配置文件保持一致。
存储编排
用户可以通过配置文件定义所需的存储容量,K8s会负责将存储卷映射到相应的Pod中,实现数据的持久化存储。
秘钥和配置管理
K8s通过Secret对象来管理敏感数据,如密码、密钥等。用户可以将敏感信息存储在Secret对象中,并在Pod的定义中引用。
常用命令
kubectl 在测试中较为常用的命令记录
获取资源信息
获取所有 Pod:kubectl get pods
获取所有 Service:kubectl get services
获取特定 Namespace 中的 Deployment:kubectl get deployment -n <namespace>
应用或更新资源配置
应用或更新一个 Deployment:kubectl apply -f deployment.yaml
应用或更新一个 ConfigMap:kubectl apply -f configmap.yaml
删除资源
删除一个 Pod:kubectl delete pod <pod-name>
删除一个 Service:kubectl delete service <service-name>
在容器内执行命令
在 Pod 内的一个容器中执行命令:kubectl exec -it <pod-name> --container <container-name> -- /bin/sh
获取容器日志
查看 Pod 内容器的日志:kubectl logs <pod-name>
调整副本数
将 Deployment 的副本数缩放为 3:kubectl scale deployment <deployment-name> --replicas=3
查看节点信息
获取节点列表:kubectl get nodes