一步步打造專(zhuān)屬于自己的Kubernetes-1.8.4集群環(huán)境

一 kubernetes

kubernetes

以下介紹摘自Wiki
Kubernetes (通常稱(chēng)為K8s) 是用于自動(dòng)部署例诀、擴(kuò)展和管理容器化(containerized)應(yīng)用程序的開(kāi)源系統(tǒng)抢韭。Google設(shè)計(jì)并捐贈(zèng)給Cloud Native Computing Foundation(今屬Linux基金會(huì))來(lái)使用的。它旨在提供“跨主機(jī)集群的自動(dòng)部署鸠踪、擴(kuò)展以及運(yùn)行應(yīng)用程序容器的平臺(tái)”缔莲。它支持一系列容器工具, 包括Docker等。

本文主要介紹如何使用kubeadm快速搭建K8s集群環(huán)境扎唾,讓你迅速體驗(yàn)學(xué)習(xí)Kubernetes召川。

更多內(nèi)容查閱官網(wǎng)K8s.io


二 實(shí)驗(yàn)環(huán)境

硬件

宿主機(jī):Win10 + Virtualbox
虛擬機(jī):2核4g + 橋接網(wǎng)卡

主機(jī)名 系統(tǒng) IP
master.k8s CentOS 7.4 x86_64 192.168.1.100
node1.k8s CentOS 7.4 x86_64 192.168.1.101
node2.k8s CentOS 7.4 x86_64 192.168.1.102

軟件

軟件包 版本
kubeadm v1.8.4
kubelet v1.8.4
kubectl v1.8.4
kubernetes-cni 0.5.1
docker 1.12.6

上述安裝包已經(jīng)上傳百度云,下載鏈接: https://pan.baidu.com/s/1c2NJADy 密碼: dfgq

鏡像

Kubeadm初始化中會(huì)從gcr.io中下載很多鏡像胸遇。如果是在國(guó)內(nèi)(無(wú)奈的FUC~K)荧呐,只得另辟蹊徑,自找出路纸镊。我是將鏡像同步到了Docker Hub倍阐,然后從docker hub 下載,再tag回來(lái)逗威。

鏡像名稱(chēng) 倉(cāng)庫(kù) 備注
kube-proxy-amd64:v1.8.4 gcr.io/google_containers/ FQ
kube-scheduler-amd64:v1.8.4 gcr.io/google_containers/ FQ
kube-controller-manager-amd64:v1.8.4 gcr.io/google_containers/ FQ
kube-apiserver-amd64:v1.8.4 gcr.io/google_containers/ FQ
etcd-amd64:3.0.17 gcr.io/google_containers/ FQ
k8s-dns-sidecar-amd64:1.14.5 gcr.io/google_containers/ FQ
pause-amd64:3.0 gcr.io/google_containers/ FQ
k8s-dns-kube-dns-amd64:1.14.5 gcr.io/google_containers/ FQ
k8s-dns-dnsmasq-nanny-amd64:1.14.5 gcr.io/google_containers/ FQ
flannel:v0.9.1-amd64 quay.io/coreos 正常訪(fǎng)問(wèn)

三 all節(jié)點(diǎn)

下列操作在所有節(jié)點(diǎn)以root用戶(hù)執(zhí)行峰搪。

3.1 更新系統(tǒng)

yum makecache fast
yum -y update

3.2 停用SWAP分區(qū)

臨時(shí)停止,重啟無(wú)效:
# swapoff -a

永久關(guān)閉:

1. 刪除SWAP分區(qū)
2. 修改/etc/default/grub,找到GRUB_CMDLINE_LINUX并刪除swap
3. 備份/etc/grub2.cfg
4. 重新生成/etc/grub2.cfg

3.3 關(guān)閉SELinux

臨時(shí)停止凯旭,重啟無(wú)效:
# setenforce 0

永久關(guān)閉:
修改/etc/selinux/config概耻,然后重啟系統(tǒng)。

3.4 設(shè)置內(nèi)核參數(shù)

cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system

3.5 安裝kubeadm等包

將下載好的包上傳至系統(tǒng)目錄罐呼,這里是/opt/soft/

執(zhí)行安裝命令:yum localinstall -y /opt/soft/*.rpm

3.6 開(kāi)啟firewalld

systemctl restart firewalld
systemctl enable firewalld

3.7 加速docker pull

由于大部分源都在國(guó)外鞠柄,國(guó)內(nèi)下載體驗(yàn)很不好,所以需要設(shè)置docker加速器弄贿。

常用的有:

  1. Daocloud 加速
  2. aliyun 加速

這里使用Daocloud

3.8 調(diào)整kubelet啟動(dòng)參數(shù)

這一步很關(guān)鍵春锋,在沒(méi)有調(diào)整kubelet啟動(dòng)參數(shù)之前,我初始化K8s cluster后差凹,在 /var/log/message 中頻繁出現(xiàn)以下錯(cuò)誤信息:

Nov 28 09:29:03 k8s kubelet: E1128 09:29:03.679613    6485 summary.go:92] Failed to get system container stats for "/system.slice/kubelet.service": failed to get cgroup stats for "/system.slice/kubelet.service": failed to get container info for "/system.slice/kubelet.service": unknown container "/system.slice/kubelet.service"
Nov 28 09:29:03 k8s kubelet: E1128 09:29:03.679651    6485 summary.go:92] Failed to get system container stats for "/system.slice/docker.service": failed to get cgroup stats for "/system.slice/docker.service": failed to get container info for "/system.slice/docker.service": unknown container "/system.slice/docker.service"
Nov 28 09:29:03 k8s kubelet: W1128 09:29:03.679695    6485 helpers.go:847] eviction manager: no observation found for eviction signal allocatableNodeFs.available

后來(lái)在 stackoverflow 上找到了同問(wèn)題的解決辦法期奔,就是調(diào)整啟動(dòng)參數(shù):

編輯配置文件 /etc/systemd/system/kubelet.service.d/10-kubeadm.conf

新增: Environment="KUBELET_MY_ARGS=--runtime-cgroups=/systemd/system.slice --kubelet-cgroups=/systemd/system.slice"

修改ExecStart: 在末尾新增 $KUBELET_MY_ARGS

問(wèn)題地址: https://stackoverflow.com/questions/46726216/kubelet-fails-to-get-cgroup-stats-for-docker-and-kubelet-services

3.9 下載鏡像

從docker hub中下載所需鏡像,并重新tag

images=(kube-proxy-amd64:v1.8.4 kube-scheduler-amd64:v1.8.4 kube-controller-manager-amd64:v1.8.4 kube-apiserver-amd64:v1.8.4 etcd-amd64:3.0.17 k8s-dns-sidecar-amd64:1.14.5 pause-amd64:3.0 k8s-dns-kube-dns-amd64:1.14.5 k8s-dns-dnsmasq-nanny-amd64:1.14.5) 

for imageName in ${images[@]} ; do
  docker pull yotoobo/$imageName
  docker tag  yotoobo/$imageName gcr.io/google_containers/$imageName
  docker rmi  yotoobo/$imageName
done

3.10 修改/etc/hosts

由于沒(méi)有內(nèi)網(wǎng)dns服務(wù)危尿,所以這里使用hosts文件呐萌。

添加以下內(nèi)容到/etc/hosts

192.168.1.100 master.k8s
192.168.1.101 node1.k8s
192.168.1.102 node2.k8s

四 master節(jié)點(diǎn)

下列操作在master節(jié)點(diǎn)以root用戶(hù)執(zhí)行。

4.1 允許指定端口訪(fǎng)問(wèn)

firewall-cmd --permanent --add-port=6443/tcp
firewall-cmd --permanent --add-port=2379-2380/tcp
firewall-cmd --permanent --add-port=10250/tcp
firewall-cmd --permanent --add-port=10251/tcp
firewall-cmd --permanent --add-port=10252/tcp
firewall-cmd --permanent --add-port=10255/tcp
firewall-cmd --reload

端口作用:

端口 目的
6443 kube-apiserver
2379-2380 etcd server client API
10250 kubelet api
10251 kube-scheduler
10252 kube-controller-manager
10255 Read-only Kubelet API

4.2 啟動(dòng)服務(wù)

systemctl enable kubelet && systemctl restart kubelet
systemctl enable docker && systemctl restart docker

4.3 kubeadm 初始化

kubeadm init --kubernetes-version=v1.8.4 --token-ttl 0 --pod-network-cidr=10.244.0.0/16

--kubernetes-version=v1.8.4 :不指定會(huì)去google獲取版本信息谊娇,所以你懂的~~~
--token-ttl 0 :token永不過(guò)期肺孤,不指定默認(rèn)24h后過(guò)期
--pod-network-cidr=10.244.0.0/16 :如果要正常使用Flannel,則確保使用此配置

接著等待初始化完成

kubeadm-init

如果看到提示1,則說(shuō)明初始化成功,恭喜赠堵,你已經(jīng)成功了90%了小渊。

按照提示2執(zhí)行對(duì)應(yīng)操作。

提示3則非常重要了茫叭,要妥善保存好酬屉,以后添加node機(jī)到K8s集群就需要它了。

4.4 安裝Flannel

K8s有許多可選的Pod Network揍愁,這里選擇Coreos的Flannel呐萨。

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/v0.9.1/Documentation/kube-flannel.yml

4.5 查看master狀態(tài)

get-info

五 nodes節(jié)點(diǎn)

下列操作在nodes節(jié)點(diǎn)以root用戶(hù)執(zhí)行。

5.1 允許指定端口

firewall-cmd --permanent --add-port=10250/tcp
firewall-cmd --permanent --add-port=10255/tcp
firewall-cmd --permanent --add-port=30000-32767/tcp
firewall-cmd --reload

30000-32767為NodeService的默認(rèn)端口

5.2 啟動(dòng)服務(wù)

systemctl enable kubelet && systemctl restart kubelet
systemctl enable docker && systemctl restart docker

5.3 kubeadm join

使用步驟4.3中的提示3莽囤,將nodes節(jié)點(diǎn)添加到K8s集群中谬擦。

kubeadm-join

最后

至此,我們借助Kubeadm搭建了一套3節(jié)點(diǎn)的集群環(huán)境朽缎,不過(guò)需要指出的是Kubeadm還是一個(gè)beta版工具惨远,還不建議在生產(chǎn)環(huán)境中使用。因?yàn)閙aster節(jié)點(diǎn)饵沧、etcd锨络、kube-apiserver等都還屬于單節(jié)點(diǎn)赌躺。

現(xiàn)在狼牺,回到master機(jī)器上,再來(lái)驗(yàn)證下K8s環(huán)境:

get-info2

在創(chuàng)建一個(gè)簡(jiǎn)單的Pod:

cat >> /opt/k8s/myapp-pod.yml << EOF
apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod
  labels:
    app: myapp
spec:
  containers:
  - name: myapp-container
    image: busybox
    command: ['sh', '-c', 'echo Hello Kubernetes! && sleep 3600']
EOF

kubectl apply -f /opt/k8s/myapp-pod.yml

驗(yàn)證:

pod-info

K8s還有許許多多的特性和功能礼患,在深入學(xué)習(xí)中你會(huì)發(fā)現(xiàn)K8s是如此的強(qiáng)大而富有魅力是钥。

奔跑的K8s!C宓悄泥!

同時(shí)此文章也發(fā)布在了我的個(gè)人博客,希望大家可以多多光顧。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末肤粱,一起剝皮案震驚了整個(gè)濱河市弹囚,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌领曼,老刑警劉巖鸥鹉,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異庶骄,居然都是意外死亡毁渗,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門(mén)单刁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)灸异,“玉大人,你說(shuō)我怎么就攤上這事》握粒” “怎么了檐春?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀(guān)的道長(zhǎng)么伯。 經(jīng)常有香客問(wèn)我喇聊,道長(zhǎng),這世上最難降的妖魔是什么蹦狂? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任誓篱,我火速辦了婚禮,結(jié)果婚禮上凯楔,老公的妹妹穿的比我還像新娘窜骄。我一直安慰自己,他們只是感情好摆屯,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布邻遏。 她就那樣靜靜地躺著,像睡著了一般虐骑。 火紅的嫁衣襯著肌膚如雪准验。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,301評(píng)論 1 301
  • 那天廷没,我揣著相機(jī)與錄音糊饱,去河邊找鬼。 笑死颠黎,一個(gè)胖子當(dāng)著我的面吹牛另锋,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播狭归,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼夭坪,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了过椎?” 一聲冷哼從身側(cè)響起室梅,我...
    開(kāi)封第一講書(shū)人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎疚宇,沒(méi)想到半個(gè)月后亡鼠,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡灰嫉,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年拆宛,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片讼撒。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡浑厚,死狀恐怖股耽,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情钳幅,我是刑警寧澤物蝙,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站敢艰,受9級(jí)特大地震影響诬乞,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜钠导,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一震嫉、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧牡属,春花似錦票堵、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至措伐,卻和暖如春特纤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背侥加。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工捧存, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人官硝。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓矗蕊,卻偏偏與公主長(zhǎng)得像短蜕,于是被迫代替她去往敵國(guó)和親氢架。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容