概述
Kubernetes 1.4引入了kubeadm的部署机制,极大地简化了Kubernetes集群的构建,可以很方便地集成到自动化运维中(Terraform, Chef, Puppet等)。
kubeadm还处于alpha版本,替换之前kube-up.sh,用于集群的创建和节点的增加。
准备
- 1、主机集群:一台以上物理机或是VM
- 2、硬件配置:1G以上内存
- 3、操作系统:ubuntu 16.04、CentOS7、HypriotOS v1.0.1
- 4、集群网络:集群所有主机都是连通的(公有或是私有网络)
操作流程
安装 kubelet 和 kubeadm
Kubernetes安装依赖于以下程序包,需要在每个主机(节点)上安装:
- docker:容器运行环境
- kubelet:Kubernetes最核心的组件,它运行在集群所有的节点上,并实际操作POD和容器
- kubectl:交互命令行控制集群。通常在Master节点使用,也可在worker节点使用
- kubeadm:交互命令行加载集群,用于集群的创建和节点的增加。
Ubuntu/Debian/HypriotOS系统
切换至root用户,普通用户执行
CentOS7系统
|
|
Note:kubelet 每间隔数秒重启一次,等待接受当出现故障时来自kubeadm的处理响应。
初始化Master节点
Master节点运行着“control plane”一组组件,“control plane”的组件主要包括etcd(集群的k-v数据库)和 API Server(提供和kubectl CLI交互),所有的组件都通过kubelet启动运行在pod中。
选择一台安装有kebelet和kubeadm的主机。执行以下命令:
Master节点正确初始化后,会有类似这样的输出:
出于安全考虑,默认情况下Master节点不会调度部署pods,也就是说Master节点不会作为Worker节点,如果你想搭建单机集群,让Master节点成为Worker节点,执行以下命令:
|
|
注:这条命令将会从任何节点上移除“dedicated”标记,包括Master节点,这意味着调度器可以在任何节点上调度部署pods。
配置Pod网络
Kubernetes 1.2版本默认使用的是flannel网络,用于解决POD跨主机之间的通信。新版本未提供默认的网络插件,在部署应用集群之前,必须要配置POD网络。
未配置POD网络,默认的KUBE-DNS是无法启动的,通过下面的方法查看:
这里使用的是weave网络,也可以使用Calico或Cannal。
|
|
网络安装完成,通过下面的命令可以查看kube-dns已经启动
添加Worker节点
通过
添加worker节点后,可以在Master节点通过
安装Demo应用
|
|
Tear down
- uninstall 一个app,在Master节点执行
delete namespace sock-shop``` 123456- undo kubeadm的操作,重置本地状态:```bashsystemctl stop kubelet;docker rm -f -v $(docker ps -q);find /var/lib/kubelet | xargs -n 1 findmnt -n -t tmpfs -o TARGET -T | uniq | xargs -r umount -v;rm -r -f /etc/kubernetes /var/lib/kubelet /var/lib/etcd;
More
- 学习Kubeadm的高级用法 http://kubernetes.io/docs/admin/kubeadm/
- 学习更多Kubernetes理念和kubctl的用法: http://kubernetes.io/docs/user-guide/walkthrough/
- 学习其他组件(包括日志、监控、网络策略、可视化控制等),参见: http://kubernetes.io/docs/admin/addons.