作为K8s学习笔记,介绍相关组件、单机环境搭建,以备后查。
“Kubernetes(K8s)是一个开源项目,用于自动化部署、扩缩容和管理容器化的应用。它将组成应用程序的容器分组为逻辑单元,以便于管理和发现”。简单来说就是容器编排工具,官方文档中介绍说K8s在Google生产环境中有15年的运行经验,并且吸纳了社区中很多好的想法和实践。
概念&组件
K8s既然是容器编排工具,一定少不了最基础的Container
操作Container最初由Docker来进行的,K8s中有自己的最小操作单位,称为Pod。Pod可以理解为一个或多个Container的组合
Pod的维护交给ReplicaSet去做,通过Selector来进行管理
Pod和ReplicaSet的状态需要维护和监测,于是就有了Deployment
相同或有关联的Pod需要分类管理——Label
具有相同Label的服务需要有个名称,即Service
Pod运行在Docker主机中,这个主机就被称为Node
以上概念作为整体来展示,如下所示:
集群想要完成工作应该需要一些组件支持,如下所示:
- kubectl 作为操作集群的客户端,发送交互请求
- 请求应该先到达Master Node,再分发给Worker node执行创建Pod等操作。请求需要认证授权
- APIServer Master Node中由它来接收请求
- Scheduler APIServer需要根据一定的调度策略来分发请求
- Controller 具体执行请求
- kube-proxy 在Worker Node接收请求
- kubelet 创建Pod(Docker创建container)
- DNS 域名解析
- ETCD 分布式存储(各节点信息)
- Dashboard 监控集群状态
- fluentd 日志收集
官网提供的架构图
环境搭建
可选方案
- 原生方式
Kelsey Hightower https://github.com/kelseyhightower/kubernetes-the-hard-way
对Linux网络、安全等相关知识要求较高,有时间再折腾
- 在线实验环境
Cloud上搭建
企业级解决方案CoreOS
Minikube
Kubeadm
搭建Minikube单节点
Windows
- https://kubernetes.io/docs/tasks/tools/install-kubectl/#install-kubectl-on-windows
- https://kubernetes.io/docs/tasks/tools/install-minikube/
Centos
安装Docker
安装Kubectl
1
2
3
4
5
6
7
8
9
10
11
12# 01 下载
curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s
https://storage.googleapis.com/kubernetesrelease/release/stable.txt`/bin/linux/amd64/kubectl
# 02 授权
chmod +x ./kubectl
# 03 添加到环境变量
sudo mv ./kubectl /usr/local/bin/kubectl
# 04 检查
kubectl version安装Minikube
1
2
3
4
5
6
7
8
9
10
11# 01 下载安装授权
curl -Lo minikube
https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 \
&& chmod +x minikube
# 02 添加到环境变量
sudo mkdir -p /usr/local/bin/
sudo install minikube /usr/local/bin/
# 03 检查
minikube version使用Minikube创建单节点K8s
minikube start --vm-driver=none