组件:
1.主机(Master):用于控制整个Kubernetes集群
2.节点(node):负责执行请求和分配所有任务的节点
3.容器集(Pod):部署在 node 节点上,且包至少含一个或多个容器,同一个容器集中的所有容器共享同一个IP地址,主机名以及其他资源
4.复本控制器(Replication Controller):用于控制应在集群某处运行的完全相同的容器集副本数量
5.服务(Service):将工作内容与容器集进行隔离,Kubernetes 服务代理会自动将服务请求分发到某个容器集上
6.kubectl:Kubernetes 的命令行配置工具
7.kubelet:负责 node 节点与 master 节点进行通信,同时管理本机的容器集,负责维护容器集的生命周期
优势:
1.批量编排:可以在多台容器的服务器上创建相同的容器实例
2.资源利用:当一个应用有多个副本时,Kubernetes 会通过自身的算法将每个应用 pod 分布在每个 node 节点上,优先选择物理资源使用率最低的那一台去部署
3.服务透明:直接访问要访问的东西,不关心其他信息
4.负载均衡
5.故障自愈:当 pod 异常停止或删除时,通过定义的描述信息生成新的一个一模一样的 pod
6.弹性伸缩:一个是集群节点扩容,还有一个就是一个服务可以生成多个一样的服务
7.动态变更:动态更改内存之类的
8.健康检查:根据自定义检测方式以及应对处理策略来对pod进行一系列操作
访问 pod 的方式:
一、hostPort 或 hostNetwork:
此种方式直接将 pod 内部端口映射到部署 pod 的主机上,外部访问通过主机 IP +端口直接访问 pod
注意:
1.使用 hostNetwork 需要注意 pod 的 ip ,每次 pod 的 ip 是会变化的
2.使用 hostPort 注意 , Pod 重新调度时该 Pod 可能会被调度到不同的宿主机,因此,需要维护一个 Pod 与宿主机的对应关系
二、NodePort:
K8s中的 service 默认情况都是使用 Cluster IP 这种类型,会产生一个只能在内部访问的 Cluster IP,如果想能够直接访问service,需要将 service type 修改为 nodePort。同时给改 service 指定一个 nodeport 值(30000-32767),集群外就可以使用 K8s 任意一个节点的 IP 加上端口访问该服务了,kube-proxy 会自动将流量以轮询的方式转发给该 service 的每一个 pod
直接创建方法:
1.先创建 deployment (管理 pod 的控制器):
kubectl create deployment 名字 --image=镜像 -o yaml > deploy.yaml
2.部署:
kubectl apply -f deploy.yaml
3.暴露给外面访问:
kubectl expose deployment 刚刚创建的名字 --port=server 的端口 --target-port=容器的端口 --type