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阅读 159,569评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,499评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,271评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,087评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,474评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,670评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,911评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,636评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,397评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,607评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,093评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,418评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,074评论 3 237
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,092评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,865评论 0 196
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,726评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,627评论 2 270

推荐阅读更多精彩内容