環境 | 版本 |
---|---|
OS | CentOS Linux release 7.4.1708 (Core) |
Kernel | Linux version 3.10.0-693.el7.x86_64 |
rke | v0.1.9 |
rancher | v2.0.8 |
docker | 1.13.1 |
主機名 | ip | 安裝用戶 | 操做系統 |
---|---|---|---|
rk1 | 192.168.0.130 | docker | CentOS Linux release 7.4 |
rk2 | 192.168.0.129 | docker | CentOS Linux release 7.4 |
setenforce 0 systemctl disable iptables-services firewalld systemctl stop iptables-services firewalld
vi /etc/selinux/config SELINUX=disabled service network restart
vi /etc/hosts 127.0.0.1 localhost 192.168.0.129 rk2 192.168.0.130 rk1
以rk1機器(192.168.0.130)爲例node
1.登陸192.168.0.130linux
ssh root@192.168.0.130
2.修改主機名爲rk1
nginx
vi /etc/sysconfig/network NETWORKING=yes HOSTNAME=rk1 hostname rk1 hostnamectl set-hostname rk1
3.退出從新登陸查看是否生效git
[root@rk1 ~]# hostname rk1
#將安裝rke用戶加入docker組,建議安裝用戶選擇非root用戶 usermod -aG docker docker
修改/etc/fstab 註釋掉如下配置項github
#/dev/mapper/VolGroup-lv_swap swap swap defaults 0 0
修改/etc/sysctl.confdocker
$ echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf $ systemctl restart network $ sysctl net.ipv4.ip_forward
登陸rk1json
$ ssh-keygen #生成公鑰和私鑰 $ ssh-copy-id docker@192.168.0.129 $ ssh-copy-id docker@192.168.0.130 #驗證是否生效 [docker@rk1 ~]$ ssh docker@192.168.0.129 date Mon Aug 27 21:36:27 CST 2018
##備份原yum源 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo yum makecache
yum -y install docker service docker start ##查看docker版本 docker -v Docker version 1.12.6, build 3e8e77d/1.12.6
docker默認訪問國外docker hub上鏡像,速度較慢,能夠替換成國內源,阿里和daocloud都有相關加速器,並且是永久免費,這裏以daocloud爲例.執行如下命令便可替換源(加速器是筆者的帳號永久免費能夠放心使用)centos
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://41935bf4.m.daocloud.io
這個腳本在centos 7上有個bug,腳本會改變docker的配置文件/etc/docker/daemon.json
但修改的時候多了一個逗號,致使docker沒法啓動api
[root@docker /]# more /etc/docker/daemon.json {"registry-mirrors": ["http://41935bf4.m.daocloud.io"],}
將最後的逗號去掉便可,截止到寫這篇文檔(2018-08-28)該bug還還沒有修復.
替換後重啓docker便可bash
systemctl restart docker
重啓服務器後須要從新啓動docker服務不然集羣沒法正常安裝
Rancher Kubernetes Engine(RKE)是rancher提供的一個快速安裝kubernted集羣工具,
使用Golang語言編寫,可以實如今短期內部署高可用kubernetes集羣環境,從而大大下降安裝kubernetes成本.
RKE安裝集羣須要指定配置文件cluster.yml
,只要環境按照以上步驟預先配置好,只要一行命令就能安裝Kubernetes
集羣.
能夠從https://github.com/rancher/rke/releases下載安裝包,本文使用版本v0.1.9
.下載完後將安裝包上傳至任意節點.
這裏提供一個簡單版配置文件
nodes: - address: 192.168.0.130 user: docker role: - controlplane - etcd - worker - address: 192.168.0.129 user: docker role: - controlplane - etcd - worker cluster_name: mpaascluster
這裏簡單定義了兩個節點,完整的配置清單能夠打開https://rancher.com/docs/rke/v0.1.x/en/example-yamls/查看.
將cluster.yml
和rke的安裝包rke_linux-amd64
放到同一個目錄下,並在終端將當前目錄cd到當前兩個文件所在目錄.執行如下命令
chmod +x rke_linux-amd64 ./rke_linux-amd64 up
若是運行正常,看到如下輸出表明安裝成功
.... INFO[0018] [addons] Saving addon ConfigMap to Kubernetes INFO[0018] [addons] Successfully Saved addon to Kubernetes ConfigMap: rke-metrics-addon INFO[0018] [addons] Executing deploy job.. INFO[0018] [addons] KubeDNS deployed successfully.. INFO[0018] [ingress] Setting up nginx ingress controller INFO[0018] [addons] Saving addon ConfigMap to Kubernetes INFO[0018] [addons] Successfully Saved addon to Kubernetes ConfigMap: rke-ingress-controller INFO[0018] [addons] Executing deploy job.. INFO[0018] [ingress] ingress controller nginx is successfully deployed INFO[0018] [addons] Setting up user addons INFO[0018] [addons] no user addons defined INFO[0018] Finished building Kubernetes cluster successfully
此時在該目錄下會生成一個kube_config_cluster.yml
文件,這個文件下面會用到.
kubectl是和kuberneter交互的工具,也就是kubernnetes-cli
.經過該工具能夠在本地執行kubernetes api
kubectl安裝能夠參考https://kubernetes.io/docs/tasks/tools/install-kubectl/#install-kubectl,以MacOS
爲例,只要執行如下命令就能完成安裝,仍是很是的簡單.
brew install kubernetes-cli
安裝完後將上面rke生成的文件kube_config_cluster.yml
拷貝到本地~/.kube/
目錄下,執行如下命令驗證是否集羣鏈接成功
$ kubectl --kubeconfig kube_config_cluster.yml get nodes NAME STATUS ROLES AGE VERSION 192.168.0.129 Ready controlplane,etcd,worker 2h v1.11.1 192.168.0.130 Ready controlplane,etcd,worker 2h v1.11.1
RKE只是負責kubernetes集羣的安裝,並無安裝Rancher server
.Rancher server須要獨立安裝.這裏很是不建議rancher和kubernetes安裝在同一臺主機上,主要是會有端口衝突,雖然能夠經過端口映射解決,但不管是修改kubernetes仍是rancher都比較麻煩.
這裏在新的一臺主機上192.168.0.118
安裝Rancher server,版本爲2.0.8
,Rancher安裝相對比較簡單,執行如下命令就能完成安裝
docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher:v2.0.8
https://192.168.0.118
,若是提示證書錯誤,忽略便可.admin
.全局->添加集羣
,添加集羣.import
方式導入,輸入集羣名稱點擊建立
.kubectl --kubeconfig kube_config_cluster.yml apply -f https://192.168.0.118/v3/import/xxxxxxxxxxxxxx.yaml
若是由於Rancher正在使用不受信任/自簽名的SSL證書運行而出現"由未知頒發機構簽名的證書"錯誤, 請運行下面的命令以繞過證書檢查:
curl --insecure -sfL https://192.168.0.118/v3/import/xxxxxxxxxxx.yaml | kubectl --kubeconfig kube_config_cluster.yml apply -f -
若是出現如下錯誤
Unable to connect to the server: x509: certificate signed by unknown authority
能夠忽略,集羣仍是會正常導入
至此rancher 2.0集羣安裝完畢