Kubernetes 环境搭建
在设置 Kubernetes 之前,设置虚拟数据中心 (vDC) 是很重要的。可以将 vDC 视为一组可以通过网络相互通信的机器。如果没有设置物理或云基础架构,可以在 PROFITBRICKS 上设置 vDC 进行实践。
完成任何云上的 IaaS 设置后,需要配置 Master 和 Node 。
注意 −此设置显示为适用于 Ubuntu 机器。同样也可以在其他 Linux 机器上进行设置。
先决条件
安装 Docker −Kubernetes 的所有实例都需要安装 Docker。以下是安装 Docker 的步骤。
步骤 1 −使用 root 用户帐户登录到机器。
步骤 2 −更新软件包信息。确保 apt 软件包正常工作。
步骤 3 −运行以下命令。
$ sudo apt-get update
$ sudo apt-get install apt-transport-https ca-certificates
步骤 4 - 添加新的GPG密钥。
$ sudo apt-key adv \
--keyserver hkp://ha.pool.sks-keyservers.net:80 \
--recv-keys 58118E89F3A912897C070ADBF76221572C52609D
$ echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" | sudo tee
/etc/apt/sources.list.d/docker.list
步骤 5 − 更新 API 包的图像。
$ sudo apt-get update
一旦完成以上所有任务,您可以开始实际安装Docker引擎。但是,在此之前,您需要验证您正在使用的内核版本是否正确。
安装Docker引擎
运行以下命令以安装Docker引擎。
步骤 1 - 登录到机器上。
步骤 2 - 更新软件包索引。
$ sudo apt-get update
步骤 3 − 使用以下命令安装Docker Engine。
$ sudo apt-get install docker-engine
步骤 4 - 启动Docker守护进程。
$ sudo apt-get install docker-engine
步骤 5 − 要验证是否安装了Docker,请使用以下命令。
$ sudo docker run hello-world
安装 etcd 2.0
这需要在 Kubernetes 主节点上安装。为了安装它,请运行以下命令。
$ curl -L https://github.com/coreos/etcd/releases/download/v2.0.0/etcd
-v2.0.0-linux-amd64.tar.gz -o etcd-v2.0.0-linux-amd64.tar.gz ->1
$ tar xzvf etcd-v2.0.0-linux-amd64.tar.gz ------>2
$ cd etcd-v2.0.0-linux-amd64 ------------>3
$ mkdir /opt/bin ------------->4
$ cp etcd* /opt/bin ----------->5
在上面的命令集中 –
- 首先,我们下载 etcd 。将其保存为指定的名称。
- 然后,我们需要解压 tar 包。
- 在 /opt 目录下创建名为 bin 的文件夹。
- 将解压后的文件复制到目标位置。
现在我们准备构建 Kubernetes。我们需要在集群中的所有机器上安装 Kubernetes。
$ git clone https://github.com/GoogleCloudPlatform/kubernetes.git
$ cd kubernetes
$ make release
上述命令将在kubernetes文件夹的根目录中创建一个名为 _output 的文件夹。接下来,我们可以将该文件夹解压到我们选择的目录(例如/opt/bin等)中。
接下来,我们需要进行网络设置,其中我们实际上需要开始设置Kubernetes主节点和节点。为了做到这一点,我们需要在节点机器上进行host文件的编辑。
$ echo "<IP address of master machine> kube-master
< IP address of Node Machine>" >> /etc/hosts
以下是上述命令的输出结果。
现在,我们将从Kubernetes主节点开始实际配置。
首先,我们将开始将所有配置文件复制到其正确的位置。
$ cp <Current dir. location>/kube-apiserver /opt/bin/
$ cp <Current dir. location>/kube-controller-manager /opt/bin/
$ cp <Current dir. location>/kube-kube-scheduler /opt/bin/
$ cp <Current dir. location>/kubecfg /opt/bin/
$ cp <Current dir. location>/kubectl /opt/bin/
$ cp <Current dir. location>/kubernetes /opt/bin/
上述命令将所有配置文件复制到所需位置。现在我们将回到构建Kubernetes文件夹的同一目录。
$ cp kubernetes/cluster/ubuntu/init_conf/kube-apiserver.conf /etc/init/
$ cp kubernetes/cluster/ubuntu/init_conf/kube-controller-manager.conf /etc/init/
$ cp kubernetes/cluster/ubuntu/init_conf/kube-kube-scheduler.conf /etc/init/
$ cp kubernetes/cluster/ubuntu/initd_scripts/kube-apiserver /etc/init.d/
$ cp kubernetes/cluster/ubuntu/initd_scripts/kube-controller-manager /etc/init.d/
$ cp kubernetes/cluster/ubuntu/initd_scripts/kube-kube-scheduler /etc/init.d/
$ cp kubernetes/cluster/ubuntu/default_scripts/kubelet /etc/default/
$ cp kubernetes/cluster/ubuntu/default_scripts/kube-proxy /etc/default/
$ cp kubernetes/cluster/ubuntu/default_scripts/kubelet /etc/default/
下一步是更新/etc
目录下的复制配置文件。
在主节点上使用以下命令配置etcd。
$ ETCD_OPTS = "-listen-client-urls = http://kube-master:4001"
配置kube-apiserver
对于这一步,在主节点上,我们需要编辑之前复制的 /etc/default/kube-apiserver 文件。
$ KUBE_APISERVER_OPTS = "--address = 0.0.0.0 \
--port = 8080 \
--etcd_servers = <The path that is configured in ETCD_OPTS> \
--portal_net = 11.1.1.0/24 \
--allow_privileged = false \
--kubelet_port = < Port you want to configure> \
--v = 0"
配置 kube Controller Manager
我们需要将以下内容添加到 /etc/default/kube-controller-manager 中。
$ KUBE_CONTROLLER_MANAGER_OPTS = "--address = 0.0.0.0 \
--master = 127.0.0.1:8080 \
--machines = kube-minion \ -----> #this is the kubernatics node
--v = 0
接下来,请在相应的文件中配置kube调度器。
$ KUBE_SCHEDULER_OPTS = "--address = 0.0.0.0 \
--master = 127.0.0.1:8080 \
--v = 0"
完成以上所有任务后,我们可以继续启动Kubernetes Master。为了做到这一点,我们将重新启动Docker。
$ service docker restart
Kubernetes节点配置
Kubernetes节点将运行两个服务 kubelet和kube-proxy 。在继续之前,我们需要将下载的二进制文件复制到我们要配置Kubernetes节点的所需文件夹中。
使用与配置Kubernetes主节点时相同的文件复制方法。由于它只运行kubelet和kube-proxy,我们将对它们进行配置。
$ cp <Path of the extracted file>/kubelet /opt/bin/
$ cp <Path of the extracted file>/kube-proxy /opt/bin/
$ cp <Path of the extracted file>/kubecfg /opt/bin/
$ cp <Path of the extracted file>/kubectl /opt/bin/
$ cp <Path of the extracted file>/kubernetes /opt/bin/
现在,我们将内容复制到适当的目录。
$ cp kubernetes/cluster/ubuntu/init_conf/kubelet.conf /etc/init/
$ cp kubernetes/cluster/ubuntu/init_conf/kube-proxy.conf /etc/init/
$ cp kubernetes/cluster/ubuntu/initd_scripts/kubelet /etc/init.d/
$ cp kubernetes/cluster/ubuntu/initd_scripts/kube-proxy /etc/init.d/
$ cp kubernetes/cluster/ubuntu/default_scripts/kubelet /etc/default/
$ cp kubernetes/cluster/ubuntu/default_scripts/kube-proxy /etc/default/
我们将配置 kubelet 和 kube-proxy conf 文件。
我们将配置 /etc/init/kubelet.conf 。
$ KUBELET_OPTS = "--address = 0.0.0.0 \
--port = 10250 \
--hostname_override = kube-minion \
--etcd_servers = http://kube-master:4001 \
--enable_server = true
--v = 0"
/
对于kube-proxy,我们将使用以下命令进行配置。
$ KUBE_PROXY_OPTS = "--etcd_servers = http://kube-master:4001 \
--v = 0"
/etc/init/kube-proxy.conf
最后,我们将重新启动Docker服务。
$ service docker restart
现在我们完成了配置。您可以通过运行以下命令进行检查。
$ /opt/bin/kubectl get minions