什么是kubernets
Kubernetes,因为首尾字母中间有8个字符,所以被简写成K8s
K8s 是 Google 开源的容器集群管理系统。是底层资源与容器间的一个抽象层,在 Docker 技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性。用于自动部署,扩展和管理容器化应用程序的开源系统。
特点
可移植:支持公有云,私有云,混合云
可扩展:模块化,热插拨,可组合
自愈:自动替换,自动重启,自动复制,自动扩展
架构
这里主要分为两种节点,mater
和node
Master:主控节点,主要负责控制和维护整个集群的状态,比如创建资源、删除资源
Node:工作节点,主要负责运行任务,比如启动容器
基本概念
- Pod:K8s 的基本运行单元
- ReplicaSet:Pod 的集合
- Deployment:提供更新支持
- StatefulSets:提供有状态支持
- Volume:数据卷
- Labels:标签,资源间的关联一般通过这个来实现
Master相关组件
Master 提供集群的管理控制中心
,通常情况下,Master 会独立部署,不在上面跑用户容器,以保证整个集群的稳定性和安全。当然可以跑多个 Master 来达到高可用
Kube-apiserver
用于暴露 Kubernetes API,任何的资源请求/调用操作都是通过 Kube-apiserver 提供的接口进行
Kube-controller-manager
运行管理控制器,它们是集群中处理常规任务的后台线程。逻辑上,每个控制器是一个单独的进程,但为了降低复杂性,它们都被编译成单个二进制文件,并在单个进程中运行
Etcd
Etcd 是 Kubernetes 提供默认的存储系统
,保存所有集群数据。所以一般推荐使用时要为 Etcd 数据提供备份计划
Node相关组件
节点负责从 Master 处接收任务并执行,适当地时候调整自己的状态或删除过期的负载
Kubelet
kubelet 是工作节点主要的程序,它会监视已分配给节点的 pod,具体功能包括:
创建 Pod 所需的数据卷
创建 Pod 所需的网络
下载 Pod 的Secrets
启动 Pod 中运行的容器
定期执行容器健康检查
上报节点状态
Kube-proxy
Kube-proxy 通过在主机上维护网络规则并执行连接转发来实现 Kubernetes 服务抽象
Docker/Rkt
Docker/Rkt 用于运行容器
kubeadm(快速安装工具)
kubeadm是Kubernetes官方提供的用于快速安装Kubernetes集群的工具
,伴随Kubernetes每个版本的发布都会同步更新,kubeadm会对集群配置方面的一些实践做调整,通过实验kubeadm可以学习到Kubernetes官方在集群配置上一些新的最佳实践
kubeadm init
启动一个 Kubernetes 主节点kubeadm join
启动一个 Kubernetes 工作节点并且将其加入到集群kubeadm reset
还原 kubeadm init 或者 kubeadm join 对主机所做的任何更改
更多内容请参考官方文档kubeadm概述
kubectl(命令工具)
kubectl是用于针对Kubernetes集群运行命令的命令行接口
常用命令
k8s是用namespace区分不同项目的,所以大部分命令都需要带上-n namespace
参数
- Deployment操作
如果镜像有修改,那直接修改deploy的镜像
1 | // 查看 |
- Pod操作
如果镜像名没变,那就删除pod,然后k8s会自动拉去最新的镜像重新运行pod
1 | // 查看所有pod |
- Job操作
Job任务一般运行完一次后就没有用了,需要手动删除
1 | // 删除所有job |
- 连接远程kube
修改在.kube目录中config文件,配置:cluster、context、name
1 | // 切换到配置的config |
- 复制文件到节点容器中
1 | kubectl cp /tmp/foo <some-namespace>/<some-pod>:/tmp/bar |
更多内容请参考官方文档kubectl概述
helm(kubernetes应用的管理工具)
Helm是一种简化Kubernetes应用程序安装和管理的工具
。可以把它想象为Kubernetes的 apt/yum/homebrew
Helm chart
是用来封装kubernetes原生应用程序的yaml文件
,可以在你部署应用的时候自定义应用程序的一些metadata,便与应用程序的分发
Helm有两部分:client(helm)
和server(tiller)
,Tiller
在您的Kubernetes集群内部运行
,并管理chart的发布(安装)
,helm
可以在任何地方
更多内容请参考官方Helm