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
文件,创建deployment
kubectl 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>