硬件:
? ? ? ? 1、节点(Node):类似于手机、平板、电脑
? ? ? ? 2、集群(Cluster):多个节点组合到一起
? ? ? ? 3、持久卷(Persistent Volumes):类似于插入到集群中的外部硬盘
软件:
? ? ? ? 1、容器(Container)
? ? ? ? 2、Pod:k8s的基本计算单元。Kubernetes不直接运行容器,它将一个或多个容器封装到一个称为Pod的高级结构中。相同Pod中的任何容器都将共享相同的名称空间和本地网络
? ? ? ? 3、部署(Deployment):管理pod的抽象层。部署的主要目的是声明一个Pod应该同时运行多少个副本。当将部署添加到集群中时,它将自动地旋转加速所需的Pod数量,然后监视它们。如果一个Pod消失,部署将自动重新创建它。
使用部署,你不必手动处理Pod。你只需声明系统的期望状态,它将自动为你管理。
? ? ? ? 4、入口(Ingress):网关路由,外部由此来访问部署的应用程序
kubectl get namespaces
kubectl get pods --all-namespaces
kubectl get pods -A
kubectl run nginx --image=nginx --namespace=demo
kubectl get pods --namespace=demo -l "app=admin-service"
kubectl logs --namespace=demo -l "app=admin-service"
kubectl get pods --namespace=demo -l "app=admin-service" -o wide
Kubernetes中内建了很多controller(控制器),这些相当于一个状态机,用来控制Pod的具体状态和行为
1、Deployment:适合无状态的服务部署,例如:admin-service
2、StatefullSet:适合有状态的服务部署,例如:MySQL
3、DaemonSet:一次部署,所有的node节点都会部署,例如一些典型的应用场景:
? ? ? ? ? 运行集群存储 daemon,例如:在每个Node上运行 glusterd、ceph
? ? ? ? ? 在每个Node上运行日志收集daemon,例如:fluentd、logstash
? ? ? ? ? 在每个Node上运行监控daemon,例如:”Prometheus Node Exporter
4、Job:一次性的执行任务,例如:数据库初始化
5、Cronjob:周期性的执行任务,例如:定时任务
1、deployment
????????a、副本 replicas 去设置启动多个少实例
????????b、spec:设置容器相关的信息:镜像,cpu设置多少,端囗映射、挂载
????????c、更新策略:
? ? ? ? ? ? ? ? 1)、我升级版本了。如果我停掉之前的版本,然后上线新的版本,有一段时间服务不可用
? ? ? ? ? ? ? ? 2)、滚动更新就可以不用停止服务
2、如何获取某个pod的deployment
kubectl get deployments --namespace=demo -l "app=admin-service" -o yaml > ./admin-service.yaml
service:负责多个 pod之间的负载均衡
列出k8s的service
1.编辑yaml
????????kubectl apply 应用yaml配置
2.列出service
kubectl get services --namespace=demo -l "app=admin-service-nodeport"