您的当前位置:首页正文

Docker学习笔记之k8s部署方法

2020-09-03 来源:客趣旅游网
Docker学习笔记之k8s部署⽅法

本⽂记录了如何在ubuntu 14.04裸机上部署k8s集群,参考⾃。拓扑结构

1. 1master + 2minion

2. k8s-master 192.168.0.201 master3. k8s-node1 192.168.0.202 minion4. k8s-node2 192.168.0.203 minion准备⼯作系统

安装Ubuntu 14.04 LTS 64bit server版本系统,配置好hostname和ip。

在更新国内的软件源的时候,由于GFW的原因,经常会出现md5校验错误,建议使⽤的源。Docker

在minion节点上安装Docker,版本需要在1.2+,此处安装的是1.7.1。安装⽅法参见 。

安装好Docker之后,我们最好还配置⼀个国内的registry mirror,加快镜像拉取速度,参考。Google pause

给每个minion下载Google pause镜像。之后的⼯作会⽤到gcr.io/google_containers/pause镜像,国内⽤户由于GFW问题总是会出错,所以我们先从docker.io下载pause镜像,并设置tag。

# docker pull docker.io/kubernetes/pause

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

# docker tag gcr.io/google_containers/pause:0.8.0 gcr.io/google_containers/pause

SSH

需要所有minion节点都能从master节点直接登录,不⽤密码。 在master节点上进⾏如下操作:

$ ssh-keygen

$ ssh-copy-id user@192.168.0.201$ ssh-copy-id user@192.168.0.202$ ssh-copy-id user@192.168.0.203

部署集群下载

下载部署脚本及⼆进制⽂件。

⾸先从K8S的github仓库中下载部署脚本。

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

修改各组件的版本,下载所有组件的⼆进制⽂件。此处我们使⽤etcd 2.2.0,flannel 0.5.0,k8s 1.0.6。

$ cd kubernetes/cluster/ubuntu$ vim build.sh #修改版本号 # version setting

FLANNEL_VERSION=\"0.5.0\" ETCD_VERSION=\"2.2.0\" KUBE_VERSION=\"1.0.6\"$ ./build.sh

有时候使⽤⾮root账户下载会出现错误,此时我们可以切换到root权限下下载,完成之后再使⽤chown命令将⽂件权限设置为原来的账户。

⽬录binaries中出现如下结构则表⽰成功。

配置

打开cluster/ubuntu/config-default.sh⽂件,修改如下字段:

export nodes=${nodes:-\"wangtao@192.168.0.201 wangtao@192.168.0.202 wangtao@192.168.0.203\export role=${role:-\"a i i\

export NUM_MINIONS=${NUM_MINIONS:-2}

export SERVICE_CLUSTER_IP_RANGE=${SERVICE_CLUSTER_IP_RANGE:-10.0.1.0/24}export FLANNEL_NET=${FLANNEL_NET:-172.16.0.0/16}

如果需要master节点也作为minion节点的话,只需将role中的a改为ai即可,NUM_MINIONS表⽰minion节点的个数。service_cluster_ip_range表⽰集群中service所对应的IP范围。 flannel_net表⽰pod所分配的IP范围。部署

进到cluster/⽬录下进⾏如下操作,

$ export KUBERNETES_PROVIDER=ubuntu$ ./kube-up.sh

接下来脚本就会将⼆进制⽂件拷贝到相应的节点上,不过在运⾏服务的时候需要root权限,所以需要我们为每⼀个节点输⼊⼀次密码。测试

我们可以使⽤kubectl⼯具进⾏测试是否安装成功。

⾸先我们把kubectl的路径加⼊到PATH中,然后我们就可以直接使⽤该命令了。

我们启动⼀个Redis服务试⼀试。

进⼊examples/guestbook⽬录,修改redis-master-controller.yaml⽂件如下:

apiVersion: v1

kind: ReplicationControllermetadata:

name: redis-master labels:

name: redis-masterspec:

replicas: 2 selector:

name: redis-master template:

metadata: labels:

name: redis-master spec:

containers: - name: master image: redis ports:

- containerPort: 6379

然后运⾏如下命令启动Redis。

$ kubectl create -f redis-master-controller.yaml

然后使⽤kubectl get rc 和 kubectl get pods 查看是否成功。

如果每个pod的状态都为Running则部署成功。

这⾥可能会遇到pod状态⼀直处于Penning的问题,此时可以通过kubectl describe pods/pod-name来查看pod信息,如果没有出错信息,那么Minion⼀直处于下载镜像中,下载好之后pod即会成功启动。动态管理Cluster

如果集群已经部署好,我们希望能够动态地添加和删除Minion节点。

⼀种⽅法是,使⽤kube-down.sh将所有节点停掉之后,修改config-default.sh⽂件,将新添加的节点信息加⼊进去,或者删掉不⽤的节点信息,然后再使⽤kube-up.sh脚本重新启动。

当然我们希望能够在不关掉已有节点的情况下动态添加新的Minion节点,但是⽬前我还没找到⽅法。等以后研究出来了再更新。

以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

因篇幅问题不能全部显示,请点此查看更多更全内容