首页
登录 | 注册

Kubernets安装

Kubernets 分为两种节点:master节点和minion节点,前者是管理节点,后者是容器运行的工作节点。部署时管理节点和工作节点可以部署在同一台机器上,也可分别单独工作在不同机器上。所以部署时最少需要一台机器,这样我们学习的时候可以在一台虚拟机上进行安装。

这里我使用了两台虚机,每台虚机的操作系统是Ubuntu14.04 ,其中一台虚机上同时运行master节点和minion节点。

节点

数量

地址

用户名

密码

master + minion

1

10.158.240.100

kuber

123456

minion

1

10.158.240.101

kuber

123456


一、docker的安装

每台minion节点上都需要安装docker。执行下面命令

    $  curl -sSL https://get.docker.com   | sudo sh

设置免sudo 使用docker

    添加用户组

        $ sudo groupadd docker

        $ sudo gpasswd -a kuber docker   //kuber替换成你自己得用户名

        $ sudo service docker restart

注销后重新登录

查看docker是否安装成功

$ docker version


二、设置用户无密码sudo

部署中如果使用的为非root账号,需要设置普通用户账号sudo权限不需要输入密码,减少后续部署过程中的交互情况。每台机器都要设置

1修改/etc/sudoers文件

sudo vim /etc/sudoers 

修改:%sudo ALL=(ALL:ALL) ALL为:%sudo ALL=NOPASSWD: ALL

2添加普通用户到sudo

$ sudo adduser kuber sudo   //替换kuber为你的用户名


三、设置ssh 登录minion 节点免密码

部署过程中需要从master机器ssh以及scpnode节点,因此需要设置master机器到其他minion免密码登陆。在master机器上执行如下命令 

    1生成rsa key

    $ ssh-keygen

    2拷贝pub key到所有minion的虚机

        $ ssh-copy-id  kuber@10.158.240.100   //替换用户名及地址


四、安装bridge-utils

Kubernets需要操作bridge,因此需要安装bridge-utils支持。命令如下:

    $ sudo apt-get install bridge-utils


五、安装kubernets

安装kubernets只需要在master节点操作即可,master会自动给minion节点远程安装kubernets组件。

1)下载kubernets代码

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

$  git checkout v1.2.0-alpha.5   //这里我们使用最新的版本

2)下载源码二进制可执行版本及解压生成

$ cd kubernetes/cluster/ubuntu

$ ./download-release.sh

  因为国内网络问题,下载很慢,经常下载错误。可以从以下地址提前把包下载好

    https://github.com/coreos/flannel/releases/download/v0.5.5/flannel-0.5.5-linux-amd64.tar.gz

    https://github.com/coreos/etcd/releases/download/v2.2.1/etcd-v2.2.1-linux-amd64.tar.gz

    https://github.com/GoogleCloudPlatform/kubernetes/releases/download/v1.1.2/kubernetes.tar.gz

   也可以从百度云盘下 http://pan.baidu.com/s/1hqT1okk

  把下载好的包拷贝到 kubernetes/cluster/ubuntu目录下,修改download-release.sh,并执行,diff文件如下


diff --git a/cluster/ubuntu/download-release.sh b/cluster/ubuntu/download-release.sh
index 3fce5d0..ea6100f 100755
--- a/cluster/ubuntu/download-release.sh
+++ b/cluster/ubuntu/download-release.sh
@@ -24,7 +24,7 @@ function cleanup {
   # cleanup work
   rm -rf flannel* kubernetes* etcd* binaries
 }
-trap cleanup SIGHUP SIGINT SIGTERM
+trap  SIGHUP SIGINT SIGTERM
 
 pushd $(dirname $0)
 mkdir -p binaries/master
@@ -34,7 +34,8 @@ mkdir -p binaries/minion
 FLANNEL_VERSION=${FLANNEL_VERSION:-"0.5.5"}
 echo "Prepare flannel ${FLANNEL_VERSION} release ..."
 grep -q "^${FLANNEL_VERSION}\$" binaries/.flannel 2>/dev/null || {
-  curl -L  https://github.com/coreos/flannel/releases/download/v${FLANNEL_VERSION}/flannel-${FLANNEL_VERSION}-linux-amd64.tar.gz -o flannel.tar.gz
+  #curl -L  https://github.com/coreos/flannel/releases/download/v${FLANNEL_VERSION}/flannel-${FLANNEL_VERSION}-linux-amd64.tar.gz -o flannel.tar.gz
+  mv flannel-${FLANNEL_VERSION}-linux-amd64.tar.gz flannel.tar.gz
   tar xzf flannel.tar.gz
   cp flannel-${FLANNEL_VERSION}/flanneld binaries/master
   cp flannel-${FLANNEL_VERSION}/flanneld binaries/minion
@@ -46,7 +47,8 @@ ETCD_VERSION=${ETCD_VERSION:-"2.2.1"}
 ETCD="etcd-v${ETCD_VERSION}-linux-amd64"
 echo "Prepare etcd ${ETCD_VERSION} release ..."
 grep -q "^${ETCD_VERSION}\$" binaries/.etcd 2>/dev/null || {
-  curl -L https://github.com/coreos/etcd/releases/download/v${ETCD_VERSION}/${ETCD}.tar.gz -o etcd.tar.gz
+  #curl -L https://github.com/coreos/etcd/releases/download/v${ETCD_VERSION}/${ETCD}.tar.gz -o etcd.tar.gz
+  mv ${ETCD}.tar.gz  etcd.tar.gz
   tar xzf etcd.tar.gz
   cp ${ETCD}/etcd ${ETCD}/etcdctl binaries/master
   echo ${ETCD_VERSION} > binaries/.etcd
@@ -56,7 +58,7 @@ grep -q "^${ETCD_VERSION}\$" binaries/.etcd 2>/dev/null || {
 KUBE_VERSION=${KUBE_VERSION:-"1.1.2"}
 echo "Prepare kubernetes ${KUBE_VERSION} release ..."
 grep -q "^${KUBE_VERSION}\$" binaries/.kubernetes 2>/dev/null || {
-  curl -L https://github.com/GoogleCloudPlatform/kubernetes/releases/download/v${KUBE_VERSION}/kubernetes.tar.gz -o kubernetes.tar.gz
+  #curl -L https://github.com/GoogleCloudPlatform/kubernetes/releases/download/v${KUBE_VERSION}/kubernetes.tar.gz -o kubernetes.tar.gz
   tar xzf kubernetes.tar.gz
   pushd kubernetes/server
   tar xzf kubernetes-server-linux-amd64.tar.gz





3)配置kubernets

修改 kubernetes/cluster/ubuntu/config-default.sh

    export nodes=${nodes:-"kuber@10.158.240.100  kuber@10.158.240.101"}

    role=${role:-"ai i "}

    export NUM_MINIONS=${NUM_MINIONS:-2}


上面的变量定义如下:

    nodes: 指定所有的节点地址和对应的用户名,包括master节点和minion节点。

    role:   指定上面nodes对应位置的节点的角色,主要包括amasteriminion。

    NUM_MINIONS :  minion节点的数量。


4)部署

切换到kubernetes/cluster目录,执行如下命令:

$ KUBERNETES_PROVIDER=ubuntu ./kube-up.sh

该命令会远程部署minion


5)安装Kubernets插件

    1)修改config-default.sh文件,开启DNSUI等(默认即为开启,不需要修改)

    2)修改deployAddons.sh文件(这里为一个bug

     KUBECTL="${KUBE_ROOT}/cluster/kubectl.sh"修改为:KUBECTL="kubectl"

3)添加kubectl的路径到PATH 环境变量中

vim  ~/.barshrc,添加如下一行

      export PATH=$PATH:~/kubernetes/cluster/ubuntu/binaries/ 

      $ source ~/.bashrc    

     路径是kubectl可执行文件的绝对路径。

  4)部署插件,执行如下命令

     KUBERNETES_PROVIDER=ubuntu ./deployAddons.sh

6) 验证部署是否成功,执行如下命令查看minion节点是否安装成功:

    $ kubectl get nodes

NAME             LABELS                            STATUS    AGE

10.158.240.100   kubernetes.io/hostname=10.158.240.100   Ready     4d

10.158.240.101   kubernetes.io/hostname=10.158.240.101   Ready     4d


六、设置docker 仓库镜像

因为国内网络访问docker hub比较慢,我们可以使用daoclouddocker仓库镜像进行加速,在每台minion上执行如下命名,添加daocloud的仓库镜像路径。

echo "DOCKER_OPTS=\"\$DOCKER_OPTS --registry-mirror=http://988b4023.m.daocloud.io\"" | sudo tee -a /etc/default/docker


sudo service docker restart

该脚本可以将--registry-mirror加入到你的Docker配置文件/etc/default/docker中。适用于Ubuntu14.04,其他版本可能有细微不同。


注意:设置docker仓库镜像要放在安装完kubernets后执行,否则会被kubernets把配置给改掉。


七、下载kubernets使用的基础镜像

由于kubernets创建pod时,要使用pause的镜像,因为国内网络的原因,无法下载,会导致创建pod失败。这里我们需要在每台minion上下载好这个镜像

    $ docker pull kubernetes/pause

    $ docker tag kubernetes/pause gcr.io/google_containers/pause:0.8.0

八、创建pod,验证

$ kubectl create -f pod.yaml

$ kubectl get pods

pod.yaml
apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  containers:
  - name: nginx
    image: nginx
    ports:
    - containerPort: 80




相关文章

  • 1.安装pcre tar -zxvf pcre-7.8.tar.gz ./configure 2.安装Nginx tar -zxvf nginx-0.7.26.tar.gz ./configure --prefix=/usr/local/n ...
  • ubuntu默认安装nodejs版本太低 为4.1.2 如果安装最新版本nodejs,需要如下命令 curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash - sudo ap ...
  • 社交系统ThinkSNS+安装部署演示视频
    ThinkSNS社交系统主要功能有:微博(朋友圈).即时聊天.直播.论坛.资讯.CMS.活动.频道.圈子.问答.打赏等主流社交功能应有尽有. ThinkSNS产品官方地址:网页链接 社交系统ThinkSNS+安装部署演示视频 一. 工具 2 ...
  • 如何安装Virtual Box的VBox Guest Additions扩展程序
    这些弊端在安装了Guest Additions扩展程序后能得到完美解决. 在VirtualBox的官网下载VBoxGuestAdditions.iso这个镜像文件, 稍后收到提示: Running kernel modules will n ...
  • 最简单的教程:在Ubuntu操作系统里安装Docker
    今天这篇文章咱们就来将Docker安装到Ubuntu上. sudo apt-get remove docker docker-engine docker-ce docker.io 2. 更新apt包索引: sudo apt-get inst ...
  • 在ubuntun虚拟机里安装goLang语言编程环境
    Go语言是谷歌2009发布的第二款开源编程语言. 北京时间2010年1月10日,Go语言摘得了TIOBE公布的2009年年度大奖.该奖项授予在2009年市场份额增长最多的编程语言. 本文介绍如何在ubuntu操作系统下面安装goLang. ...

2020 unjeep.com webmaster#unjeep.com
12 q. 0.012 s.
京ICP备10005923号