Kubernetes简单介绍
自动化容器操作的平台
包括部署、管理、调度和节点集群之间扩展
是谷歌2014年开源的容器编排引擎
采用G0语言编写
详细架构解释
用户通过kubectl命令来操作整个自动化容器平台
整个自动化容器平台分为master(主控制器及大脑) 和node(节点)
master: 集群控制节点,对集群进行调度,接受群外用户去集群操作请求
负责编排所有运行在节点上的容器
由多个组件构成,用来管理和调度集群
node :集群的工作节点,运行用户业务应用容器
一个node就相当于一台电脑
节点接受master的指令创建pod、删除pod或者调整网络规则
是集群的工作节点,运行用户业务应用容器
逻辑过程
1、用户操作kubectrl,,发送请求给API Server组件
2、API组件中scheduler调度员根据现有资源进行分析,找到最好的一个最合适的node节点,来运行用户所的请求的节点,将结果给到apiserver
3、apiserver调用controller-manager控制管理员对pod进行管理创建nginx服务
4、节点中的kubelet(包工头)通知手下人docker创建和启动一个nginx的pod
5、用户访问nginx 通过kube-proxy对pod产生代理,也就是我们用户可以通过代理访问这个容器
注意:从集群环境搭建起来,所有数据会存到etcd数据库中
详细解释组件和节点
master
kube-apiserver
处理api操作
所有组件都会和apiserver交互
kube-controller-manager
控制管理集群状态
kube-scheduler:调度器
监控和分析
etcd
分布式储存系统
存放所有需要的信息
node
kubelet
监控-工地监工,确保这些PodSpecs中描述的容器处于运行状态且健康
kube-proxy
维护节点网络规则,允许从集群内部或外部的网络与Pod进行网络通信。他是实现kubernetes Service概念的重要组件
中间商
Container Runtime
运行容器的软件
容器
pod
相关容器的组合在同一主机上
同一个pod端口不能重复
通过localhost访问
是kubernets进行创建的最小创建、调度和管理的单元
使用相同的网络命名空间、IP地址
deployment
一组pod数组
帮助depioyment自动恢复失败的pod
service
提供一个或者多个pod实例的稳定访问地址
就相当于我们买东西通过第三方中间商提供的地址供外部访问
Namespace
一个集群内逻辑隔离
用于实现多租户的资源隔离 不同的Namespace中的资源可以重名。默认的命名空间是default,K8s的命名空间是kube-system。
常用命令
查看
kubectl get node(s)
kubectl get service(s)/svc
kubectl get deployment/deploy
kubectl get pod(s)
删除
删除nginx service
kubectl delete service nginx
删除nginx控制器
kubectl delete deployment nginx
删除pod
kubectl delete pod nginx-6799fc88d8-glfh4(pod名字)
最好逐条删除
查看日志详细信息容器
查看pod详细信息
kubectl describe pods pod/nginx111-7d949d95f5-mgllh(pod名称)
查看pod的日志
kubectl logs pod/nginx111-7d949d95f5-mgllh(pod名称)
进入pod中的容器
kubectl exec -it pod名称 -- /bin/bash
部署步骤
应用步骤
制作镜像
编写Dockerfile文件构建镜像
从仓库拉取镜像
通过控制器管理pod
把镜像放到容器中启动起来
暴露应用,让外界访问
举例
制作镜像
1、kubectl create deployment nginx --image=nginx
2、kubectl expose deployment nginx --port=80 --type=NodePort(有现成直接仓库拉取)
通过yaml文件部署容器化应用
kubectl apply -f nginx_deploy.yaml(yaml是资源清单)
通过文件删除此应用
kubectl delete -f nginx_deploy.yaml
容器化应用
程序放在docker里部署,这个docker应用就是容器化应用
外部访问kubernetes集群方法
通过Service暴露
port
nodePort
targetPort
一个管理端口
Service暴露服务的三种类型
ClusterIP1
NodePort
常用需要记住
LoadBalancer
费钱