这里准备了三台centos虚拟机,每台一核cpu和2G内存,配置好root帐户,并安装好了docker,后续的全部操做都是使用root帐户。虚拟机具体信息以下表:node
系统类型 | IP地址 | 节点角色 | CPU | Memory | Hostname |
---|---|---|---|---|---|
centos7.2 | 10.0.94.182 | worker | 1 | 2G | server01 |
centos7.2 | 10.0.94.112 | master | 1 | 2G | server02 |
centos7.2 | 10.0.94.246 | worker | 1 | 2G | server03 |
使用ubuntu的同窗也能够参考此文档,须要注意替换系统命令便可mysql
通常状况使用下面的方法安装便可linux
yum remove docker docker-common docker-selinux docker-engine
yum install -y yum-utils device-mapper-persistent-data lvm2 //安装更新源工具
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo //添加docker安装源 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo //国内镜像 yum-config-manager --disable docker-ce-edge //禁止edge版本
yum update -y 更新源
sudo yum makecache fast sudo yum install docker-ce sudo systemctl enable docker //开机自启动 sudo systemctl start docker
#获取版本列表 yum list docker-ce.x86_64 --showduplicates |sort -r #指定版本安装(好比版本是17.03.1~ce-0~centos) sudo yum install docker-ce-17.03.1.ce-1.el7.centos
$ vi /lib/systemd/system/docker.service #找到ExecStart=xxx,在这行上面加入一行,内容以下:(k8s的网络须要) ExecStartPost=/sbin/iptables -I FORWARD -s 0.0.0.0/0 -j ACCEPT
#建立文件/etc/docker/daemon.json,添加以下内容: { "exec-opts": ["native.cgroupdriver=systemd"] }
systemctl daemon-reload && systemctl restart docker && systemctl status docker
遇到问题能够参考:官方教程nginx
systemctl stop firewalld systemctl disable firewalld #查看状态 systemctl status firewalld
setenforce 0
编辑文件/etc/selinux/config,将SELINUX修改成disabled,以下:git
SELINUX=disabled
Kubernetes 1.8开始要求关闭系统的Swap,若是不关闭,默认配置下kubelet将没法启动。方法一,经过kubelet的启动参数–fail-swap-on=false更改这个限制。方法二,关闭系统的Swap。github
swapoff -a
修改/etc/fstab文件,注释掉SWAP的自动挂载,使用free -m确认swap已经关闭。sql
#写入配置文件 cat <<EOF > /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF #生效配置文件 $ sysctl -p /etc/sysctl.d/k8s.conf
# 配置host,使每一个Node均可以经过名字解析到ip地址 $ vi /etc/hosts # 加入以下片断(ip地址和servername替换成本身的) 10.0.94.182 server01 10.0.94.112 server02 10.0.94.246 server03
kubernetes的安装有几种方式,不论是kube-admin仍是社区贡献的部署方案都离不开这几种方式:docker
直接从官方或其余第三方下载,就是kubernetes各个组件的可执行文件。拿来就能够直接运行了。不论是centos,ubuntu仍是其余的linux发行版本,只要gcc编译环境没有太大的区别就能够直接运行的。使用较新的系统通常不会有什么跨平台的问题。shell
编译结果也是各个组件的二进制文件,因此若是能直接下载到须要的二进制文件基本没有什么编译的必要性了。json
一样一个功能使用二进制文件提供的服务,也能够选择使用镜像的方式。就像nginx,像mysql,咱们可使用安装版,搞一个可执行文件运行起来,也可使用它们的镜像运行起来,提供一样的服务。kubernetes也是同样的道理,二进制文件提供的服务镜像也同样能够提供。
从上面的三种方式中其实使用镜像是比较优雅的方案,容器的好处天然不用多说。但从初学者的角度来讲容器的方案会显得有些复杂,不那么纯粹,会有不少容器的配置文件以及关于相似二进制文件提供的服务如何在容器中提供的问题,容易跑偏。 因此咱们这里使用二进制的方式来部署。二进制文件已经这里备好,你们能够打包下载,把下载好的文件放到每一个节点上,放在哪一个目录随你喜欢,放好后最好设置一下环境变量$PATH,方便后面能够直接使用命令。(***的同窗也能够本身去官网找找)
####下载地址(kubernetes 1.9.0版本)
$ cd $ wget https://d11.baidupcs.com/file/8978e11910fb914bf1ab64b07976387f?bkt=p3-00002e17df651425d9ebba9738a94260652d&xcode=1483c091614709ca1f8aebee62ed1736ae9fc2e7aef036b5347c2dfae32981f3d0b67a61d4982d47&fid=4043815353-250528-907147618066443&time=1523770067&sign=FDTAXGERLQBHSKa-DCb740ccc5511e5e8fedcff06b081203-5yQA%2FzOEVOgp6%2FV21cqTCe%2FY8HQ%3D&to=d11&size=196361624&sta_dx=196361624&sta_cs=174&sta_ft=gz&sta_ct=5&sta_mt=5&fm2=MH%2CYangquan%2CAnywhere%2C%2Cshanghai%2Cct&vuk=4247423043&iv=0&newver=1&newfm=1&secfm=1&flow_ver=3&pkey=00002e17df651425d9ebba9738a94260652d&sl=81068110&expires=8h&rt=sh&r=431850130&mlogid=2425063882106374965&vbdid=463040528&fin=kubernetes-bins.tar.gz&fn=kubernetes-bins.tar.gz&rtype=1&dp-logid=2425063882106374965&dp-callid=0.1.1&hps=1&tsl=10&csl=10&csign=zHM%2B%2FfQNfqc7suh8mmRWRLs6e4g%3D&so=0&ut=8&uter=4&serv=0&uc=185380727&ic=3389584746&ti=5e666840c78f1973ef8ab19e5a112b76ee0066a78adba1f7305a5e1275657320&by=themis $ tar -xvf kubernetes-bins.tar.gz $ rm kubernetes-bins.tar.gz $ mv kubernetes-bins/ bin
上一步咱们下载了kubernetes各个组件的二进制文件,这些可执行文件的运行也是须要添加不少参数的,包括有的还会依赖一些配置文件。如今咱们就把运行它们须要的参数和配置文件都准备好。
#到home目录下载项目 $ cd $ git clone https://github.com/jimbunny/kubernetes-starter.git # 看看git内容 $ cd ~/kubernetes-starter && ls
shell脚本,用来根据每一个同窗本身的集群环境(ip,hostname等),根据下面的模板,生成适合你们各自环境的配置文件。生成的文件会放到target文件夹下。
简易版kubernetes配置模板(剥离了认证受权)。 适合刚接触kubernetes的同窗,首先会让你们在和kubernetes初次见面不会印象太差(太复杂啦~~),再有就是让你们更容易抓住kubernetes的核心部分,把注意力集中到核心组件及组件的联系,从总体上把握kubernetes的运行机制。
在simple基础上增长认证受权部分。你们能够自行对比生成的配置文件,看看跟simple版的差别,更容易理解认证受权的(认证受权也是kubernetes学习曲线较高的重要缘由)
这个先不用关注,它是咱们曾经开发的那些微服务配置。 等咱们熟悉了kubernetes后,实践用的,经过这些配置,把咱们的微服务都运行到kubernetes集群中。
这里会根据你们各自的环境生成kubernetes部署过程须要的配置文件。 在每一个节点上都生成一遍,把全部配置都生成好,后面会根据节点类型去使用相关的配置。
#cd到以前下载的git代码目录 $ cd ~/kubernetes-starter #编辑属性配置(根据文件注释中的说明填写好每一个key-value) $ vi config.properties #生成配置文件,确保执行过程没有异常信息 $ ./gen-config.sh simple #查看生成的配置文件,确保脚本执行成功 $ find target/ -type f target/all-node/kube-calico.service target/master-node/kube-controller-manager.service target/master-node/kube-apiserver.service target/master-node/etcd.service target/master-node/kube-scheduler.service target/worker-node/kube-proxy.kubeconfig target/worker-node/kubelet.service target/worker-node/10-calico.conf target/worker-node/kubelet.kubeconfig target/worker-node/kube-proxy.service target/services/kube-dns.yaml
执行gen-config.sh常见问题:
gen-config.sh: 3: gen-config.sh: Syntax error: "(" unexpected
bash版本太低,运行:bash -version查看版本,若是小于4须要升级
不要使用 sh gen-config.sh的方式运行(sh和bash可能不同哦)
config.properties文件填写错误,须要从新生成 再执行一次./gen-config.sh simple便可,不须要手动删除target