這裏準備了三臺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