ubuntu14.04+k8s1.1+docker1.9集群部署

实验环境:

操作系统:ubuntu14.04_x64

master192.168.72.131

minion01 : 192.168.72.132  容器网段:172.17.0.0/16

minion02 : 192.168.72.133  容器网段:172.17.1.0/16

 

Docker安装:

1. 安装前先检查系统对docker的支持。Docker需要64位机器,需要运行在3.8以上的内核上,需要操作系统支持Device Mapper。可以使用uname -a查看系统信息和主机信息。

2. 添加阿里云源和docker的源

a) 备份源文件:sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup

b) 在sources.list文件添加阿里云和docker源覆盖旧的源

i. deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse

ii. deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse

iii. deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse

iv. deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse

v. deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse

vi. deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse

vii. deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse

viii. deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse

ix. deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse

x. deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse

xi. deb https://get.docker.io/ubuntu docker main

3. 添加完源后,执行sudo apt-get update更新源。

4. 安装curl

i. 先查看curl有没有安装,whereis curl,没有的话安装curlsudo apt-get -y install curl

5. 添加DockerGPG密钥

i. Sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys D8576A8BA88D21E9

6. 安装docker软件包

i. Sudo apt-get install lxc-docker

7. 使用docker info检查一下安装情况



Master安装Docker镜像仓库:

1. 拉取registry镜像

sudo docker pull docker.io/registry

2. 查看镜像拉取成功

docker images

3. 启动registry

docker run -d -p 5000:5000 --name=registry --restart=always --privileged=true  --log-driver=none -v /home/data/registrydata:/tmp/registry registry

4. Ubuntu下需修改docker配置文件

a) 编辑Vi /etc/default/docker

b) 添加DOCKER_OPTS="--insecure-registry=192.168.72.131:5000",注:masterIp:端口

c) 重启dockersudo service docker restart

5. Docker1.3后查询镜像命令

curl http://192.168.72.131:5000/v2/_catalog


curl http://192.168.72.131:5000/v2/kubernetes-dashboard-amd64/tags/list



SSH服务器和客户端安装

1. 执行命令

sudo apt-get install openssh-server openssh-client

2. 在master上安装ssh-agent

a) 执行命令:ssh-keygen,会在~/.ssh/目录下多出来两个文件:id_rsa.pub(公钥文件)id_rsa(私钥文件)

b) 在所有minion节点中~/.ssh/authorized_keys配置文件添加公钥文件内容,(注:没有文件就创建文件)

i. Scp id_rsa.pub [email protected]:~/.ssh/

ii. Cat id_rsa.pub >> ~/.ssh/authorized_keys

3. 重启ssh服务

sudo service ssh restart

4. 测试ssh

master执行ssh 192.168.72.132登录minion节点不需要密码则成功



k8s集群部署:

1. 下载部署脚本及二进制文件

kubernetes.tar.gz

etcd-v3.1.7-linux-amd64.tar.gz

flannel-0.5.5-linux-amd64.tar.gz

2. 解压kubernetes二进制文件

tar zxvf kubernetes.tar.gz

3. 拷贝kubernetes/server/目录下saltbase目录到kubernetes/cluster/目录下

a) 解压kubernetes/server/kubernetes-salt.tar.gz

b) cp saltbase /home/k8s/docker/kubernetes/cluster/

4. 拷贝二进制文件到kubernetes/cluster/ubuntu/目录

a) cp kubernetes.tar.gz etcd-v3.1.7-linux-amd64.tar.gz flannel-0.5.5-linux-amd64.tar.gz /home/k8s/docker/kubernetes/cluster/ubuntu/

b) 修改 mv etcd-v3.1.7-linux-amd64.tar.gz /home/k8s/docker/kubernetes/cluster/ubuntu/etcd.tar.gz

c) 修改 mv flannel-0.5.5-linux-amd64.tar.gz /home/k8s/docker/kubernetes/cluster/ubuntu/flannel.tar.gz

5. 修改各组件的版本,下载所有组件的二进制文件。此处我们使用etcd 3.1.7flannel 0.5.5k8s 1.1.3

vi /home/k8s/docker/kubernetes/cluster/ubuntu/build.sh


1. 执行命令./build.sh,进入目录binaries中出现如下结构则表示成功


1. 配置cluster/ubuntu/config-default.sh文件

a) export nodes=${nodes:-"[email protected] [email protected] [email protected]"}

b) export role=${role:-"ai i i"}

c) export NUM_MINIONS=${NUM_MINIONS:-3}

d) export SERVICE_CLUSTER_IP_RANGE=${SERVICE_CLUSTER_IP_RANGE:-192.168.3.0/24}

e) export FLANNEL_NET=${FLANNEL_NET:-172.16.0.0/16}


注:

role中的a代表master节点,i代表minion节点,ai代表masterminion节点

NUM_MINIONS表示minion节点的个数。

SERVICE_CLUSTER_IP_RANGE表示集群中service所对应的IP范围。

FLANNEL_NET表示pod所分配的IP范围。

1. 进入kubernetes/cluster/目录下执行部署命令,注:部署过程中需要输入密码

KUBERNETES_PROVIDER=ubuntu ./kube-up.sh

2. 测试k8s是否部署成功

a) 添加kubectl的路径加入到PATH

b) Vi /etc/profile末尾添加export PATH="/home/k8s/docker/kubernetes/cluster/ubuntu/binaries/:$PATH"

c) 执行命令:Source /etc/profile

3. Kubectl get no检查k8s是否部署成功

a) 查询集群节点:kubectl get no


a) 查询apihttp://192.168.72.131:8080/swagger-ui/


1. 部署K8sui

a) 准备ui配置文件:kube-ui-rc.yamlkube-ui-svc.yaml

b) 准备ui镜像文件:kubernetes-dashboard-amd64_v1.5.0.tar

c) 准备初始容器镜像文件:Pause0.8.0

d) 创建rckubectl create -f kube-ui-rc.yaml

e) 查看rckubectl get rc --namespace=kube-system


a) 创建svckubectl create -f kube-ui-svc.yaml

b) 查看svckubectl get svc --namespace=kube-system


查看pokubectl get po --namespace=kube-system


a) 访问K8s可视化ui界面:http://192.168.72.131:8080/api/v1/proxy/namespaces/kube-system/services/kubernetes-dashboard/#/service?namespace=kube-system



K8s+docker部署遇到问题:

1. kubectl命令失效问题:nano ~/.bashrc 末尾添加source /etc/profile

2. liunx scp出现 Permission denied, please try again 的解决办法

a) 修改 /etc/ssh/sshd_config文件中 PermitRootLogin no / without-password  改为 PermitRootLogin yes

b) 重启ssh服务:sudo service ssh restart

3. 安装docker出现 GPG签名验证错误

a) Sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys D8576A8BA88D21E9

4. 查询docker仓库镜像问题

a) docker:v2

curl http://192.168.72.131:5000/v2/_catalog

curl http://192.168.72.131:5000/v2/pause/tags/list

b) docker:v1

curl http://192.168.72.131:5000/v1/search

5. Sudo apt-get update遇到问题:E: Unable to lock directory /var/lib/apt/lists/

a) sudo rm /var/lib/apt/lists/lock

6. ftp上传文件(使用put)时,permission denied,下载文件(使用get)时,failed to open file

a) 进入对应目录cd /var/ftp/pub

b) 赋权chmod 777 testput

7. Ssh问题:Please start ssh-agent, add your identity, and retry.

a) /etc/profile.d下新建ssh-agent.sh文件

b) vi /etc/profile.d/ssh-agent.sh

#!/bin/sh

if [ -f ~/.agent.env ]; then

        . ~/.agent.env >/dev/null

        if ! kill -0 $SSH_AGENT_PID >/dev/null 2>&1; then

                echo "Stale agent file found. Spawning new agent..."

                eval `ssh-agent |tee ~/.agent.env`

                ssh-add

        fi

else

        echo "Starting ssh-agent..."

        eval `ssh-agent |tee ~/.agent.env`

        ssh-add

fi

8. 国内下载镜像失败问题,可以通过以下地址进行下载

a) 通过阿里云容器镜像中查找https://dev.aliyun.com/search.html?spm=5176.1972343.0.1.fkjAwn,在用命令docker pull下载

b) https://storage.googleapis.com/kubernetes-release/release/v1.1.3/kubernetes.tar.gz

c) etcdhttp://pan.baidu.com/s/1c1wITMw

d) kuberneteshttp://pan.baidu.com/s/1kUoxgYb

9. Docker pull镜像并修改镜像tag

a) docker pull docker.io/kubernetes/pause

b) docker tag kubernetes/pause gcr.io/google_containers/pause:0.8.0

c) docker tag gcr.io/google_containers/pause:0.8.0 gcr.io/google_containers/pause:0.8.0

10. Docker导入导出镜像

a) docker save -o centos_with_net.tar 92b2e7f857ae

b) docker load <centos_with_net.tar