一、k8s基础知识
Kubernetes是一个可以移植、可扩展的开源平台,使用声明式配置并依据配置信息自动地执行容器化应用程序的管理。在所有的容器编排工具中,Kubernetes的生态系统更大、增长更快,有更多的支持、服务和工具可供用户选择。因为k到s之间有8个字母,所以简称k8s。
容器化部署是目前主流的应用程序部署方式,在实际的生产的环境,技术人员需要管理容器化应用程序,并确保其不停机连续运行,例如停机快速重启替补容器,容器版本更新等。类似的容器管理工作需要容器管理系统来执行,而k8s就是这样的管理系统。
k8s在容器管理上具体以下特性:
- 服务发现和负载均衡
k8s通过DNS名称或者容器IP地址暴露容器的访问方式,并且可以在同组容器内分发负载,实现负载均衡。
- 存储编排
k8s可以自动挂载指定的存储系统。
- 自动发布和回滚
通过声明式配置实现。
- 自我愈合能力
包括自动重启停机容器、替换或kill不健康容器、隐藏未就绪容器等。
- 密钥和配置管理
k8s可以存储和管理敏感信息。
上图是一个k8s集群的典型架构图,各部分组件如下。
(1)Kubernetes Master
master组件是整个k8s集群的控制平台(control plane),负责全局决策和探测并响应集群事件,相当于集群的大脑。其中的API Server提供与k8s集群交互的API,Replication Controller负责监控并保证有指定数量的Pod在运行。
(2)Server
server的作用是与对应标签的Pod网络连接,外网可以通过server访问对应的Pod里的应用程序。
(3)Node
Node组件负责维护运行中的Pod并提供k8s运行时环境,其中有三个重要组件:kubelet,kube-proxy和容器引擎。
kubelet负责确保Pod中的容器始终处于运行和健康状态;kube-proxy是一个网络代理程序,负责维护节点网络规则,与server的功能关联很大;容器引擎负责运行容器,k8s支持多种引擎,包括docker、cri-o等。
(4)Pod
Pod(上图绿色方框)包含一组容器和卷。同一个Pod里的容器共享同一个网络命名空间,可以使用localhost互相通信。一些Pod还有Label(上图标签图形),一个Label是attach到Pod的一对键/值对,用来传递用户定义的属性。
二、k8s安装(win10 docker destop为例)
不同的操作系统,有不同的k8s安装方式,这里仅以笔者的win10系统docker desktop为例,其他方法可以看k8s官网的教程。
需要下载docker