美文网首页
CentOS 7安装Kubernetes 0.21.2和flan

CentOS 7安装Kubernetes 0.21.2和flan

作者: gonil | 来源:发表于2015-07-12 22:14 被阅读5658次

环境假定如下,两台机器均安装了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

相关文章

网友评论

      本文标题:CentOS 7安装Kubernetes 0.21.2和flan

      本文链接:https://www.haomeiwen.com/subject/wheuqttx.html