实验环境:
操作系统:ubuntu14.04_x64
master:192.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,没有的话安装curl,sudo apt-get -y install curl
5. 添加Docker的GPG密钥
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) 重启docker:sudo 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.7,flannel 0.5.5,k8s 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代表master和minion节点
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) 查询api:http://192.168.72.131:8080/swagger-ui/
1. 部署K8s的ui
a) 准备ui配置文件:kube-ui-rc.yaml和kube-ui-svc.yaml
b) 准备ui镜像文件:kubernetes-dashboard-amd64_v1.5.0.tar
c) 准备初始容器镜像文件:Pause:0.8.0
d) 创建rc:kubectl create -f kube-ui-rc.yaml
e) 查看rc:kubectl get rc --namespace=kube-system
a) 创建svc:kubectl create -f kube-ui-svc.yaml
b) 查看svc:kubectl get svc --namespace=kube-system
查看po:kubectl 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) etcd:http://pan.baidu.com/s/1c1wITMw
d) kubernetes:http://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