k8s | 基本概念(1)
K8s 集群架构
- 一个Master节点(主节点) 负责管理和控制
- 一群Node节点(计算节点) 工作负载节点,里面是具体的容器。
API Server是整个系统的对外接口,供客户端和其它组件调用,相当于“接待大厅”。Scheduler负责对集群内部的资源进行调度,相当于“人力资源部”。Controller manager负责管理控制器,相当于“部门主管”。etcd存储集群的状态、Pod 的调度信息、Service 的发现和网络配置等;相当于“公司档案室”
Kubelet,主要负责监视指派到它所在Node上的Pod,包括创建、修改、监控、删除等。“工作人员”Kube-proxy,主要负责为Pod对象提供代理。“网络代理”Fluentd,主要负责日志收集、存储与查询。
Pod
最小调度单位,一个pod包含一个或多个容器,共享存储和网络。
Pod本意是豌豆荚的意思,此处指的是K8S中资源调度的最小单位,豌豆荚里面的小豆子就像是Container,豌豆荚本身就像是一个Pod
相关指令
-
通过文件创建pod
kubectl apply -f nginx.yaml -
查看所有的pod
kubectl get pods -
显示有关资源的详细信息
kubectl describe pods -
打印 Pod 中容器的日志
kubectl logs --follow nginx-pod # 查看日志,--follow参数可以实时查看 -
kubectl exec- 在 Pod 中的容器上执行命令 -
端口映射
kubectl port-forward nginx 4000:80 -
删除指定的pod
kubectl delete pod <podName>kubectl delete -f nginx.yaml
deployment
Deployment 是在 Pod 这个抽象上更为上层的一个抽象,它可以定义一组 Pod 的副本数目、以及这个 Pod 的版本。
- 定义一组
Pod的副本数量,版本等 - 通过控制器维护
Pod的数目 - 自动恢复失败的
Pod - 通过控制器以指定的策略控制版本
相关指令
-
编写
deployment.yaml文件,创建deploymentkubectl create -f deployment.yaml -
查看所有的deployment
kubectl get deployments -
删除指定的pod
kubectl delete deployments <deploymentName> -
查看集群配置
kubectl config view -
应用升级
kubectl set image deloyment web nginx=nginx:1.15查看是否成功
kubectl rollout status deloyment web查看历史版本
kubectl rollout history deloyment web回滚到上一个版本
kubectl rollout undo deloyment web后面加上 --to-version = 2 回滚到指定版本
弹性伸缩
kubectl scale deloyment web --repicas = 10
services
Pod是不稳定的,IP是会变化的,所以需要一层抽象来屏蔽这种变化,这层抽象叫做Service
- 提供访问一个或者多个Pod实例稳定的访问地址
- 支持多种访问方式ClusterIP(对集群内部访问)NodePort(对集群外部访问)LoadBalancer(集群外部负载均衡)
相关指令
-
查看services
kubectl get services 或者 kubectl get svc 可以知道映射到端口号 -
删除指定的s ervice
kubectl delete service <serviceName>