kubernetes

要说2022什么技术会火🔥,当然是kubernetes了

微服务通过传统的单位应用转变为很多目标单一的小应用,实现了解耦,各服务之间独立部署和扩展,但如何将这些应用合理高效的运行在一组机器上,这就需要kubernetes技术了,k8s是谷歌开源的容器化集群管理系统,使用k8s可以进行容器化应用的部署,方便应用的扩展,k8s让部署容器化应用更加简洁和高效。

所谓容器编排就是指自动化容器应用的部署管理扩展联网等,能够控制和自动化很多任务,包括调度和部署容器,容器之间分配资源,扩缩容器,容器的迁移,负载均衡,监视容器和主机的运行状况,而k8s有自动装箱,自我修复,水平扩展,服务发现,滚动更新,版本回退,密钥和配置管理,存储编排、批处理等功能。

kubernetes的架构组件

master node组件:api server 集群统一入口,scheduler负责节点的调度,选择node节点进行应用部署,controller-manager处理集群中任务,etcd进行保存数据。

work node组件:kubelet是负责管理本机容器,kube-proxy提供网络代理,可以进行负载均衡等操作。

k8s核心概念

pod是最小部署单元,它是一组容器的集合,可以共享网络

controller用来创建pod

serveice定义访问pod的规则

通过入口service进行访问,controller创建pod。

kubernetes集群的搭建方式

有两种,一种是kubeadm进行部署,另一种是采用二进制包的方式

kubectl

kubectl是kubernetes集群的命令行工具

常用命令:

创建pod

kubectl create deployment nginx --image=nginx

暴露端口:

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

获取node基本信息

kubectl get pod,svc

yaml文件

大家都知道,k8s集群对资源的管理和编排部署是通过yaml文件来解决的,但我们一般不直接手写yaml而是借助工具来创建

通过这个命令

kubectl create deployment web --image=nginx -o yaml --dry-run > hello.yaml

输出到hello文件中。

也可以通过已经部署镜像生成yaml文件

kubectl get deploy nginx -o=yaml --export > nginx.yaml

这样会生成Nginx对应的yaml文件