Kubernetes
K8S架构
API Server。K8S 的请求入口服务。API Server 负责接收 K8S 所有请求(来自 UI 界面或者 CLI 命令行
工具),然后,API Server 根据用户的具体请求,去通知其他组件干活。
Scheduler。K8S 所有 Worker Node 的调度器。当用户要部署服务时,Scheduler 会选择最合适的
Worker Node(服务器)来部署。
Controller Manager。K8S 所有 Worker Node 的监控器。Controller Manager 有很多具体的
Controller, Node Controller、Service Controller、Volume Controller 等。Controller 负责监控和调整 在 Worker Node 上部署的服务的状态,比如用户要求 A 服务部署 2 个副本,那么当其中一个服务挂了的时
候,Controller 会马上调整,让 Scheduler 再选择一个 Worker Node 重新部署服务。
etcd。K8S 的存储服务。etcd 存储了 K8S 的关键配置和用户配置,K8S 中仅 API Server 才具备读写权
限,其他组件必须通过 API Server 的接口才能读写数据。
K8S 核心概念
Deployment
Deployment负责创建和更新应用程序的实例。创建Deployment后,Kubernetes Master 将应用程序实例调度到
集群中的各个节点上。如果托管实例的节点关闭或被删除,Deployment控制器会将该实例替换为群集中另一个节
点上的实例。这提供了一种自我修复机制来解决机器故障维护问题。
Pod
Pod相当于逻辑主机的概念,负责托管应用实例。包括一个或多个应用程序容器(如 Docker),以及这些容器的一些共享资源(共享存储、网络、运行信息等)。
Service
Service是一个抽象层,它定义了一组Pod的逻辑集,并为这些Pod支持外部流量暴露、负载均衡和服务发现。
尽管每个Pod 都有一个唯一的IP地址,但是如果没有Service,这些IP不会暴露在群集外部。Service允许您的应用程 序接收流量。
常用命令
#查看节点
kubectl get nodes
#查看所有-默认default空间
kubectl get all
#查看指定命名空间
kubectl get all -n namespace-yhh
#删除部署
kubectl delete deployment.apps/yhhtestservice
#删除服务
kubectl delete service/yhhtestservice
#查看日志
kubectl logs pod名称
# 进入pod
kubectl exec -it pod名称 --sh
#监控pod状态,启动-死亡。。
kubectl get pod -w
#查看service详细信息
kubectl get pod,svc -o wide
#查看pod信息
kubectl describe pod pod名称
创建部署
kubectl create deployment yhhtestservice --image=yhhtestapplication:1.0.0
yhhtestservice:部署名称
yhhtestapplication:1.0.0:镜像名称和版本
kubectl expose deployment yhhtestservice --port=8080 --type=NodePort
其他命令
#查看部署的资源清单yaml
kubectl create deployment my‐tomcat ‐‐image=tomcat:7.0.75‐alpine ‐‐dry‐run ‐o yaml
#应用
kubectl apply ‐f deployment‐demo.yaml
#service
kubectl expose deployment my‐tomcat ‐‐name=tomcat ‐‐port=8080 ‐‐type=NodePort ‐‐dry‐run ‐o yaml
kubectl apply ‐f service‐demo.yaml