Docker学习笔记之k8s部署方法

 更新时间:2018年04月09日 11:15:15   作者:wangtaoking1  
这篇文章主要介绍了Docker学习笔记之k8s部署方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

本文记录了如何在ubuntu 14.04裸机上部署k8s集群,参考自官方文档

拓扑结构

  1. 1master + 2minion
  2. k8s-master 192.168.0.201 master
  3. k8s-node1 192.168.0.202 minion
  4. 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安装(Ubuntu 64bit)
安装好Docker之后,我们最好还配置一个国内的registry mirror,加快镜像拉取速度,参考配置国内免费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: ReplicationController
metadata:
 name: redis-master
 labels:
 name: redis-master
spec:
 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 rckubectl 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节点,但是目前我还没找到方法。等以后研究出来了再更新。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • mysql8.x docker远程访问配置详解

    mysql8.x docker远程访问配置详解

    本文主要介绍了mysql8.x docker远程访问配置,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • 在没有Docker缓存的情况下构建镜像的方法分享

    在没有Docker缓存的情况下构建镜像的方法分享

    这篇文章主要给大家介绍了如何在没有Docker缓存的情况下构建镜像的解决方法,文章通过代码示例介绍的非常详细,具有一定的参考价值,需要的朋友可以参考下
    2023-07-07
  • Docker删除某个镜像的实现方法

    Docker删除某个镜像的实现方法

    在使用 Docker 时,经常需要删除不再需要的镜像、容器和卷,以释放存储空间,本文主要介绍了Docker删除某个镜像的实现方法,具有一定的参考价值,感兴趣的可以了解一下
    2024-02-02
  • Docker使用Swarm组建集群的方法

    Docker使用Swarm组建集群的方法

    Docker 使用 Swarm 可以很方便的在多个主机上创建容器集群,并且容器之间可以跨主机网络通信。这篇文章主要介绍了Docker使用Swarm组建集群,需要的朋友可以参考下
    2017-11-11
  • Docker镜像管理常用操作代码示例

    Docker镜像管理常用操作代码示例

    这篇文章主要介绍了Docker镜像管理常用操作代码示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • docker安装fastdfs镜像的一些注意事项

    docker安装fastdfs镜像的一些注意事项

    在安装docker fastdfs镜像时大家需要注意如果是云服务器则需要在云服务器后台的安全组入口方向放开22122、23000以及8888端口,并且在云服务器防火墙配置放开以上三个端口,具体内容详情大家跟随小编一起看看吧
    2021-05-05
  • docker挂载本地目录和数据卷容器操作

    docker挂载本地目录和数据卷容器操作

    这篇文章主要介绍了docker挂载本地目录和数据卷容器操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • Docker打包镜像及修改配置的实现

    Docker打包镜像及修改配置的实现

    这篇文章主要介绍了Docker打包镜像及修改配置的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • docker如何部署eureka-server

    docker如何部署eureka-server

    这篇文章主要介绍了docker如何部署eureka-server问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • 如何使用Docker恢复Mysql8备份的Data数据

    如何使用Docker恢复Mysql8备份的Data数据

    这篇文章主要介绍了使用Docker恢复Mysql8备份的Data数据,下面小编给大家讲解下操作方法,对Docker恢复Mysql数据备份相关知识感兴趣的朋友跟随小编一起看看吧
    2022-11-11

最新评论