Docker
公司的容器编排系统,使用的是标准的Docker API
Docker Swarm
代理,一个主机运行一个Docker Swarm
管理者Dokcer
接口API
和命令行窗口CLI
进行容器编排Docker
的其他容器,比如:rkt
API
,命令系统是另一套系统Mesos
上运行,包含Hadoop、Kafka、Spark
等
Kubernetes
是Google
开源的一个容器集群管理系统,用于管理云平台中多个主机上的容器化的应用。Kubernetes
的目标是让部署容器化的应用简单并且高效(powerful,Kubernetes
提供了应用部署,规划,更新,维护的一种机制。
Kubernetes
是为生产环境而设计的容器调度管理系统Kubernetes
集群的组成部分 etcd
:保存集群的状态Minion,etcd
现在称为Node
:运行应用容器的主机节点,在每个Minion节点上都会运行一个Kubelet代理,控制该节点上的容器、镜像和存储卷等。Master
:运行节点的管理控制模块Cluster
: 集群是指由k8s
使用一系列的物理机、虚拟机和其他基础资源来运行用户的应用程序
。
Node
: 一个node
就是一个运行着k8s
的物理机或虚拟机
,并且pod
可以在其上面被调度。
pod
对应一个由相关容器和卷组成的容器组
。
Label
: 一个label
是一个被附加到资源上的键/值对
,譬如附加到一个Pod上,为它传递一个用户自定的并且可识别的属性。Label
还可以被应用来组织和选择子网中的资源。
selector
:是一个通过匹配labels
来定义资源之间的关系表达式
,例如为一个负载均衡的service
指定所目标Pod
。
Replication Controller
: replication controller 是为了保证一定数量被指定的Pod的复制品在任何时间都能正常工作,相当于是应用控制管理器。它不仅允许复制的系统易于扩展,还会处理当pod在机器在重启或发生故障的时候再次创建一个
Service
: 一个service定义了访问pod的方式
,就像单个固定的IP地址和与其相对应的DNS名之间的关系。
Volume
: 一个volume是一个目录,可能会被容器作为未见系统的一部分来访问。Kubernetes volume 构建在Docker Volumes
之上,并且支持添加和配置volume
目录或者其他存储设备。
Secret
: Secret 存储了敏感数据
,例如能允许容器接收请求的权限令牌
。
Name
: 用户为Kubernetes中资源定义的名字,即资源的名字。
Namespace
: Namespace 好比一个资源名字的前缀
。它帮助不同的项目、团队或是客户可以共享cluster
,例如防止相互独立的团队间出现命名冲突。
Annotation
: 相对于label来说可以容纳更大的键值对
,为了存储不可识别的辅助数据,尤其是一些被工具或系统扩展用来操作的数据。
个人用户安装Docker,参考Docker官网,选择安装社区版CE
。
//第一次在服务器上使用安装Docker,需要先安装仓库
sudo apt-get update
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"test # test和nightly至少要填写一个在stable后面
// 安装Docker-CE版本
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
MiniKube
是使用Go
语言开发的,两种方式安装:
# 下载v0.24.1版本
> curl -Lo minikube https://storage.googleapis.com/minikube/releases/v0.24.1/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/
# 下载最新版
> curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/
> minikube -h
Kubectl
k8s
通过kube-apiserver
作为整个集群管理的入口。用户可以通过kubectl
以命令行的方式同集群进行交互,它是K8s
中非常常用的工具。
Kubernetes之kubectl命令行工具简介、安装配置及常用命令
Apiserver
是整个集群的主管理节点,用户通过Apiserver配置和组织集群,etcd
存储的交互也是通过Apiserver
进行交互。Apiserver
实现了一套RESTfull
的接口,用户可以直接使用API
同Apiserver
交互。kubectl
随工具集打包,用于可直接通过kubectl
以命令行的方式同集群交互。curl -Lo kubectl https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl && chmod +x kubectl && sudo mv kubectl /usr/local/bin/
1.显示所有pod
kubectl get po # 获取当前运行的所有pods的信息
kubectl get po -o wide # 获取pod运行在哪个节点上的信息
2.显示所有rc
kubectl get rc
3.显示所有service
kubectl get service
4.删除rc
kubectl delete rc rcname
5.删除service
kubectl delete service servicename
6.删除pod
kubectl delete pod podname
7.查看pod描述
kubectl describe pod podname # 可以查看错误
8.删除所有
kubectl delete pod –all
9.获取所有的namespace\svc\nodes
kubectl get namespace\svc\nodes # 获取相关信息
kubectl get svc -all –all-namespaces
kubectl delete svc -all –all-namespaces
kubectl get limitrange –all-namespaces
kubectl delete limitrange inf-limit –namespace=inf