源碼安裝kubernetes并搭建基于CA認(rèn)證的集群

搭建一個(gè)kubernetes集群對(duì)于新手來(lái)說(shuō)比較困惑,感覺(jué)很難入手,雖然kubernetes官方提供了minikube來(lái)快速搭建一個(gè)單機(jī)版的集群冗荸。希望這篇文章對(duì)你有所幫助禀梳,本文描述了kubernetes的編譯和多節(jié)點(diǎn)集群的搭建步驟基于ubuntu14.04 x86系統(tǒng)杜窄,為了方便,kubernetes的各個(gè)組件是運(yùn)行在docker容器中的算途。
搭建集群需要提前安裝好docker, etcd, Go(編譯使用)
1)安裝docker的步驟略過(guò)塞耕,網(wǎng)上資料很多。
2)安裝Go的步驟也略過(guò)吧:)
3)編譯kubernetes:
從github上clone源碼到你的GOPATH目錄下的src/k8s.io(需要提前創(chuàng)建)目錄下郊艘,

git clone https://github.com/kubernetes/kubernetes.git

然后cdkubernetes目錄下荷科,首先下載編譯需要的第三方包(注意這里會(huì)有坑,你懂的纱注,如果下載不下來(lái)畏浆,那就自行百度吧,我是不是該把那些包也貼出來(lái)狞贱, 哈哈刻获。。瞎嬉。)蝎毡,然后直接make編譯就好厚柳。

cd kubernetes
go get ./...
make build

大約5分鐘編譯完成,這時(shí)ls一下會(huì)發(fā)現(xiàn)多了一個(gè)_output目錄沐兵,對(duì)别垮,我們要的就是它,這些個(gè)二進(jìn)制文件扎谎。進(jìn)入_output/bin目錄碳想,找到hyperkube 這個(gè)二進(jìn)制文件(這個(gè)二進(jìn)制文件包含了kubernetes各個(gè)組件的可執(zhí)行文件,有它就足夠了)毁靶,完成胧奔。
我們找到了二進(jìn)制文件,可是如何讓它們?cè)谌萜髦羞\(yùn)行呢预吆?不用擔(dān)心龙填,kubernetes已經(jīng)提供編譯hyperkube鏡像的文件,還有etcd的拐叉,下面會(huì)講到岩遗。
編譯hyperkube鏡像:
kubernetes目錄下有個(gè)cluster文件夾,然后你會(huì)發(fā)現(xiàn)它下面還有個(gè)images巷嚣,對(duì)喘先,你猜對(duì)了,就在這里:

cluster/images/hyperkube
make build VERSION=xxx ARCH=amd64

編譯完成后廷粒,你會(huì)發(fā)現(xiàn)你的docker images 里有了hyperkube鏡像窘拯。
同理,編譯etcd

cd cluster/images/etcd
make build ARCH=amd64

4)到此坝茎,所需的組件已經(jīng)準(zhǔn)備好涤姊,我們開始搭建多節(jié)點(diǎn)的集群,多節(jié)點(diǎn)跨主機(jī)嗤放,主要需要注意網(wǎng)絡(luò)那一塊思喊,kubernetes的集群是扁平管理的,就是說(shuō)在不同節(jié)點(diǎn)上的容器可以相互ping通次酌。我用的是flannel恨课,關(guān)于flannel的安裝和使用,請(qǐng)參考后續(xù)章節(jié)岳服。
下面貼出主要的組件配置剂公,僅供參考。hostIP 表示master所在主機(jī)的IP吊宋,xxx:xx表示你編譯好的hyperkube鏡像纲辽,
首先啟動(dòng)etcd

docker run -d -p 4001:4001 -v /var/etcd/data:/var/etcd/data -name etcd xxx:xx etcd \
-name etcd0 -data-dir /var/etcd/data -advertise-client-urls hostIP:4001 -listen-client-urls http://0.0.0.0:4001 -initial-advertise-peer-urls hostIP:2380 -listen-peer-urls http://0.0.0.0:2380 -initial-cluster-token etcd-cluster-1 -initial-cluster etcd0=hostIP:2380 -initial-cluster-state new

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

docker run -d -p 8443:8443 -v /etc/kubernetes:/etc/kubernetes (CA證書目錄) -name apiserver xxx:xx /hyperkube apiserver --bind-address=0.0.0.0
--insecure-bind-address=127.0.0.1
--etcd-servers=hostIP:4001
--allow-privileged=true
--service-cluster-ip-range=10.10.10.0/24
--secure-port=8443
--insecure-port=8080
--advertise-address=hostIP
--tls-cert-file=/etc/kubernetes/cert/apiserver.pem
--tls-private-key-file=/etc/kubernetes/cert/apiserver-key.pem
--client-ca-file=/etc/kubernetes/cert/ca.pem
--admission-control=LimitRanger,NamespaceLifecycle,ServiceAccount,ResourceQuota
--v=2

docker run -d -v /etc/kubernetes:/etc/kubernetes -name controller-manager xxx:xx /hyperkube controller-manager --kubeconfig=/etc/kubernetes/controller-manager-kubeconfig
--service-account-private-key-file=/etc/kubernetes/cert/apiserver-key.pem
--root-ca-file=/etc/kubernetes/cert/ca.pem
--v=2

docker run -d  -v /etc/kubernetes:/etc/kubernetes -name scheduler xxx:xx /hyperkube scheduler 
--kubeconfig=/etc/kubernetes/scheduler-kubeconfig
--master=hostIP:443
--cluster-dns=10.10.10.10
--cluster-domain=cluster.local
--v=6

minion節(jié)點(diǎn):

docker run -d -v /etc/kubernetes:/etc/kubernetes -name kubelet xxx:xx /hyperkube kubelet 
--api-servers=hostIP:443
--allow-privileged=true 
--cluster-dns=10.10.10.10
--cluster-domain=cluster.local
--config=/etc/kubernetes/manifests
--kubeconfig=/etc/kubernetes/kubelet-kubeconfig
--v=2
--file-check-frequency=5s
--hostname-override=所在主機(jī)IP
--pod-infra-container-image=就是google的pause鏡像
--tls-cert-file=/etc/kubernetes/cert/kubelet.pem
--tls-private-key-file=/etc/kubernetes/cert/kubelet-key.pem
--logtostderr=false
--log_dir=/var/log/kubernetes

docker run -d -v /etc/kubernetes:/etc/kubernetes -name kube-proxy xxx:xx /hyperkube proxy --master=hostIP:443
--kubeconfig=/etc/kubernetes/kubelet-kubeconfig
--proxy-mode=userspace

這里還需要一個(gè)kube-dns插件,在早期的kubernetes版本中是提供了啟動(dòng)DNSyaml文件的(等找到后再貼出來(lái)吧),直接使用kubectl create -f xxx.yaml命令就可以啟動(dòng)拖吼。
關(guān)于kubelet-kubeconfig 鳞上、scheduler-kubeconfig 、controller-manager-kubeconfig 是service account, 其中kubelet-kubeconfig配置如下:

current-context: service-account-context
apiVersion: v1
kind: Config
contexts:
- context:
    cluster: local
    user: kubelet
    namespace: default
  name: service-account-context
clusters:
- name: local
  cluster:
    certificate-authority: /etc/kubernetes/cert/ca.pem
    apiVersion: v1
    server: hostIP:443
users:
- name: kubelet
  user:
    client-certificate: /etc/kubernetes/cert/kubelet.pem
    client-key: /etc/kubernetes/cert/kubelet-key.pem
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末吊档,一起剝皮案震驚了整個(gè)濱河市篙议,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌怠硼,老刑警劉巖涡上,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異拒名,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)芋酌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門增显,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人脐帝,你說(shuō)我怎么就攤上這事同云。” “怎么了堵腹?”我有些...
    開封第一講書人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵炸站,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我疚顷,道長(zhǎng)旱易,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任腿堤,我火速辦了婚禮阀坏,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘笆檀。我一直安慰自己忌堂,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開白布酗洒。 她就那樣靜靜地躺著士修,像睡著了一般。 火紅的嫁衣襯著肌膚如雪樱衷。 梳的紋絲不亂的頭發(fā)上棋嘲,一...
    開封第一講書人閱讀 51,146評(píng)論 1 297
  • 那天,我揣著相機(jī)與錄音箫老,去河邊找鬼封字。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的阔籽。 我是一名探鬼主播流妻,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼笆制!你這毒婦竟也來(lái)了绅这?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤在辆,失蹤者是張志新(化名)和其女友劉穎证薇,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體匆篓,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡浑度,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了鸦概。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片箩张。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖窗市,靈堂內(nèi)的尸體忽然破棺而出先慷,到底是詐尸還是另有隱情,我是刑警寧澤咨察,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布论熙,位于F島的核電站,受9級(jí)特大地震影響摄狱,放射性物質(zhì)發(fā)生泄漏脓诡。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一媒役、第九天 我趴在偏房一處隱蔽的房頂上張望誉券。 院中可真熱鬧,春花似錦刊愚、人聲如沸踊跟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)商玫。三九已至,卻和暖如春牡借,著一層夾襖步出監(jiān)牢的瞬間拳昌,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工钠龙, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留炬藤,地道東北人御铃。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓福扬,卻偏偏與公主長(zhǎng)得像硝逢,于是被迫代替她去往敵國(guó)和親秒啦。 傳聞我的和親對(duì)象是個(gè)殘疾皇子村刨,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

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