CentOS 7安裝Kubernetes 0.21.2和flannel,運行官方guestbook案例

環境假定如下,兩臺機器均安裝了CentOS 7 x86_64版本:

  • 192.168.1.2 -- Master
  • 192.168.1.3 -- Node

Master節點安裝的服務如下,各服務意義看官方文檔先入門:

  • etcd
  • kube-apiserver
  • kube-scheduler
  • kube-controller-manager

Node節點安裝的服務如下:

  • flannel
  • docker
  • kubelet
  • kube-proxy

如無特別說明所有的可執行命令都將在以下目錄:
/data/kubernetes/server/bin/

安裝步驟如下:

安裝Master節點服務(以下所有操作都在Master節點)

下載Kubernete 0.21.2版本,解壓獲取到需要的可執行文件

$ mkdir -p /data/ && cd /data
$ curl -L -O  https://github.com/GoogleCloudPlatform/kubernetes/releases/download/v0.21.2/kubernetes.tar.gz
$ tar zxvf kubernetes.tar.gz
$ tar zxvf ./kubernetes/server/kubernetes-server-linux-amd64.tar.gz -C ./
$ ll kubernetes/server/bin/

可看到全部的kubernetes的二進制文件,需要將kubelet, kube-proxy拷貝到Node節點的相同目錄下。

獲取etcd和etcdctl可執行文件

$ cd /data/kubernetes/cluster/images/etcd/
$ make build   -- 這步其實就是下載etcd文件,使用這個的原因是要版本兼容
$ ll etcd-v2.0.12-linux-amd64/

可看到etcd和etcdctl,將其移動到/data/kubernetes/server/bin/目錄,方便統一執行和管理

$ cp etcd-v2.0.12-linux-amd64/etcd etcd-v2.0.12-linux-amd64/etcdctl /data/kubernetes/server/bin/

關閉selinux,防火墻

1、臨時關閉(不用重啟機器):
$setenforce 0 #設置SELinux 成為permissive模式
2、修改配置文件需要重啟機器:
修改/etc/selinux/config 文件
將SELINUX=enforcing改為SELINUX=disabled

$ systemctl stop firewalld iptables
$ systemctl disable firewalld iptables

啟動etcd,并增加flannel需要的網絡配置

$ cd /data/kubernetes/sever/bin/
$ ./etcd --addr 192.168.1.2:4001 --bind-addr 0.0.0.0:4001 --data-dir /var/lib/etcd/data/ 1>>/var/log/etcd.log 2>&1 &
$ ./etcdctl mk /coreos.com/network/config '{"Network":"10.1.0.0/16"}'

這里分配給flannel的子網網段是10.1.0.0/16,你也可以更換為如:192.168.0.0/16, 172.0.0.0/8等
關于flannel網絡更多信息可查看官方文檔: https://github.com/coreos/flannel

啟動kube-apiserver,kube-scheduler,kube-controller-manager

因為我本機已經有服務使用8080默認的apiserver端口,所以我改為8888端口,當然你可以使用其他任意未占用的端口。
所有安裝的服務統一日志目錄為:/var/log/k8s/

$ mkdir -p /var/log/k8s/
$ ./kube-apiserver --insecure-bind-address=0.0.0.0 \
        --insecure-port=8888 \
        --etcd-servers=http://127.0.0.1:4001 \
        --kubelet-port=10250 \
        --service-cluster-ip-range=10.254.0.0/16 \
        --log-dir=/var/log/k8s \
        --v=0 \
        --logtostderr=false \
        --admission_control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota &

$ ./kube-scheduler  --master='127.0.0.1:8888'  \
                  --v=0  \
                  --logtostderr=false \
                  --log-dir=/var/log/k8s &

$ ./kube-controller-manager  --v=0 \
                           --logtostderr=false \
                           --log-dir=/var/log/k8s  \
                           --master=127.0.0.1:8888 &

在日志目錄查看kube-controller-manager有如下錯誤信息,沒有設置cloudprovider,可忽略:

Log line format: [IWEF]mmdd hh:mm:ss.uuuuuu threadid file:line] msg
E0712 17:07:20.492353   22996 controllermanager.go:198] Failed to start service controller: ServiceController should not be run without a cloudprovider

非8080默認端口啟動的apiserver

非8080默認端口啟動的apiserver需做如下配置才能使用./kubectl,如果你使用的是8080端口,請跳過此步。

 $ mkdir -p ~/.kube/
 $ vim ~/.kube/config
apiVersion: v1
clusters:
- cluster:
    api-version: v1
    server: http://127.0.0.1:8888

安裝Node節點服務(以下所有操作都在Node節點)

關閉selinux,防火墻

同Master操作。

安裝docker并刪除 docker0 網卡

$ yum -y install docker bridge-utils && service docker start
$ iptables -t nat -F 
$ ifconfig docker0 down
$ brctl delbr docker0

拷貝Master節點的kubelet, kube-proxy文件到Node下

$ vim /etc/hosts
192.168.1.2 k8s-master
$ mkdir -p /data/kubernetes/server/bin/ && cd  /data/kubernetes/server/bin/
$ scp  k8s-master:/data/kubernetes/server/bin/kubelet,/data/kubernetes/server/bin/kube-proxy ./

安裝flannel并啟動

$ cd /data/
$ curl -L -O https://github.com/coreos/flannel/releases/download/v0.5.1/flannel-0.5.1-linux-amd64.tar.gz
$ tar zxvf flannel-0.5.1-linux-amd64.tar.gz 
$ cd flannel-0.5.1
$ cp flanneld /data/kubernetes/server/bin/ && cd  /data/kubernetes/server/bin/
$ mkdir -p /var/log/k8s/
$ ./flanneld  --v=0 \
        --logtostderr=false \
        --log_dir=/var/log/k8s  \
        --etcd-endpoints=http://k8s-master:4001 &

配置docker并啟動

建議選擇第一種。

  1. 以下方法來自網友:
    $ vim /etc/sysconfig/docker
    EnvironmentFile=-/run/flannel/subnet.env
    ExecStart=/usr/bin/docker -d --bip=${FLANNEL_SUBNET} --mtu=${FLANNEL_MTU}

  2. 以下方法是之前自己的

$ cat /run/flannel/subnet.env
FLANNEL_SUBNET=10.1.24.1/24
FLANNEL_MTU=1472
FLANNEL_IPMASQ=false
$ vim /etc/sysconfig/docker
OPTIONS='--selinux-enabled --bip=10.1.24.1/24 --mtu=1472 --iptables=false' //根據以上 /run/flannel/subnet.env的內容變更相應配置即可
INSECURE_REGISTRY='--insecure-registry docker.myself'  //如果有自己的docker私有倉庫并沒有配置https的,需要取消注釋這個選項,并修改相應的倉庫地址
#increase the number of open files for docker
DOCKER_NOFILE=1000000  //在最后加入這一行,可以增加docker打開的文件數
$ systemctl restart docker
$ systemctl enable docker

啟動Node上的Kubernetes服務

$ cd /data/kubernetes/sever/bin/
$ ./kubelet  --logtostderr=false  \
           --v=0  \
           --allow-privileged=false  \
           --log-dir=/var/log/k8s  \
           --address=0.0.0.0  \
           --port=10250  \
           --register-node=true
           --api_servers=http://k8s-master:8888 &
$ ./kube-proxy  --logtostderr=false  \
              --v=0  \
              --log-dir=/var/log/k8s  \
              --master=http://k8s-master:8888 &

在日志目錄查看kubelet日志有如下錯誤信息,暫時可忽略:

Log line format: [IWEF]mmdd hh:mm:ss.uuuuuu threadid file:line] msg
E0712 17:55:12.594873   22447 kubelet.go:682] Image garbage collection failed: unable to find data for container /

到此為止, 一個強大的k8s Cluster基本部署完成了。

以下我們做些驗證和安裝官方的guestbook:

驗證安裝是否成功

以下將在Master節點上操作kubectl,其實你可以把這個kubectl二進制文件放在任意的linux x86_64 電腦下運行,只要將上面Master最后一個操作的~/.kube/config拷貝到自己的電腦上,并修改server的值為k8s-master的IP和端口就行。

$ cd /data/kubernetes/server/bin/
$ ./kubectl version
./kubectl version
Client Version: version.Info{Major:"0", Minor:"21", GitVersion:"v0.21.2", GitCommit:"4e89f2e6670b1662021a86ac42b99c5c50c37d05", GitTreeState:"clean"}
Server Version: version.Info{Major:"0", Minor:"21", GitVersion:"v0.21.2", GitCommit:"4e89f2e6670b1662021a86ac42b99c5c50c37d05", GitTreeState:"clean"}

如果你看到了以上的信息,恭喜你,你部署成功了!
此時可看到一個簡單的集群已經安裝完成了。你可以重復以上Node節點的操作增加更多的k8s cluster的Node節點。

遇到的問題及解決

  1. 如果$cat /run/flannel/subnet.env 你發現flannel子網變更了的話,你需要刪除 docker0 網卡,然后把新flannel子網的信息相應變更到/etc/sysconfig/docker,才能重啟docker成功。
  2. 我們會在Node上看到一連串錯誤輸出,大體為:

Error: statusCode= No such image: gcr.io/google_containers/pause

好吧,在Node上運行命令:
$docker pull docker.io/kubernetes/pause
$docker tag docker.io/kubernetes/pause gcr.io/google_containers/pause:0.8.0

搭建官方的guestbook 例子

稍后推出......

參考鏈接:https://github.com/GoogleCloudPlatform/kubernetes/blob/master/docs/getting-started-guides/scratch.md

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,401評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,011評論 3 413
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 175,263評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,543評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,323評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,874評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,968評論 3 439
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,095評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,605評論 1 331
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,551評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,720評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,242評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,961評論 3 345
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,358評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,612評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,330評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,690評論 2 370

推薦閱讀更多精彩內容