首页 > 虚拟化 > linux工匠之kubernetes(k8s)在docker中跑起来
2016
11-27

linux工匠之kubernetes(k8s)在docker中跑起来

docker单独使用比较简单明了,可参看上一篇docker初学跟我来,是关于docker命令的使用方法,包括镜像拉取、容器运行、打包等。

kubernetes(k8s)是docker容器用来编排和管理的工具,就像openstack对于kvm来说一个意思。组织结构如下

linux工匠之kubernetes(k8s)在docker中跑起来 - 第1张  | linux工匠|关注运维自动化|Python开发|linux高可用集群|数据库维护|性能提优|系统架构

我们通过kubectl向k8s Master发出指令。kubernetes Master主要是提供API Server、Scheduler、Controller组件,接收kubectl的命令,从Node节点获取Node的资源信息,并发出调度任务。Node节点提供kubelet、kube-proxy,每个node节点都安装docker,是实际的执行者。kubernetes不负责网络,所以一般是用flannel或者weave。etcd负责服务发现和node信息存储,下面开始:

本文适用于kubernetes1.2–1.5版本,安装后的版本为:

一,kubernetes(k8s)的安装

linux工匠之kubernetes(k8s)在docker中跑起来 - 第2张  | linux工匠|关注运维自动化|Python开发|linux高可用集群|数据库维护|性能提优|系统架构

2台或者3台,一台作为kubernetes(k8s)的Master主,其他作为运行docker容器的节点(kubernetes Node节点),下面以2台主机为例

  • Master: A Kubernetes Master is where you direct API calls to services that control the activities of the pods, replications controllers, services, nodes and other components of a Kubernetes cluster. Typically, those calls are made by running kubectl commands. From the Master, containers are deployed to run on Nodes.

这里etcd 和zookeeper、consul一样用来实现服务发现的功能

etcd is a distributed, consistent key-value store for shared configuration and service discovery, with a focus on being:

  • Simple: well-defined, user-facing API (gRPC)
  • Secure: automatic TLS with optional client cert authentication
  • Fast: benchmarked 10,000 writes/sec
  • Reliable: properly distributed using Raft

flannel 实现不同主机网络互通

flannel is a virtual network that gives a subnet to each host for use with container runtimes.

Platforms like Kubernetes assume that each container (pod) has a unique, routable IP inside the cluster. The advantage of this model is that it reduces the complexity of doing port mapping.

linux工匠之kubernetes(k8s)在docker中跑起来 - 第3张  | linux工匠|关注运维自动化|Python开发|linux高可用集群|数据库维护|性能提优|系统架构

  • Node: A Node is a system providing the run-time environments for the containers. A set of container pods can span multiple nodes.

二,kubernetes(k8s)的相关配置

Master:

Node:

三,启动kubernetes(k8s)服务

Master: 

只有flanneld服务是高可用,其他都是单机,线上需要设置集群,保证高可用

# sh master_start.sh

Node:

# sh node_start.sh

flanneld 0.71版本和0.6用起来有些不一样的问题:

四,查看状态

在master上新建一个namespace

五,kubernetes(k8s)的dashboard

镜像请这里下载:docker pull daocloud.io/gfkchinanetquest/kubernetes-dashboard-amd64:v1.5.1 ,或者从其他渠道,本文和此docker没有任何关系

kubernetes-dashboard.yaml内容如下:

warning: 第一次创建service后,查看计算节点的docker服务一般不会成功,因为计算节点需要拉取registry.access.redhat.com/rhel7/pod-infrastructure 208.6 MB,所以等一小时后,再来查看kube-dashboard状态吧

 

六,kubernetes(k8s)管理docker容器

上一篇文章已经有了自己打包的docker image,那么把这个image导入到Node主机

如果没有已有的image,那就从网上pull吧,我这里是为了节省时间才导入,上面导入这一段可以忽略,接着往下看

Node主机中运行哪些docker,在MASTER主机上用yaml文件控制,比如下面在Master主机上:

在Node主机上查看运行的docker:

在Master主机上登录,下面登录只针对docker.io/jdeathe/centos-ssh这个image

或者我们用其他的image

因为从网上下载docker的image比较慢,有时候可能下载不下来,那么Node主机里面docker ps就没有启动的容器,一直等到下载完成便会自动启动,所以上面我用了导入以前的镜像方式,当然一般公司都是自建docker仓库

在Node主机上查看运行docker的信息:

上面是说k8s创建并启动docker容器,怎么删除呢:

删除之后,再去Node主机中docker ps查看吧

附kubernetes(k8s)的dashboard

linux工匠之kubernetes(k8s)在docker中跑起来 - 第4张  | linux工匠|关注运维自动化|Python开发|linux高可用集群|数据库维护|性能提优|系统架构

linux工匠之kubernetes(k8s)在docker中跑起来 - 第5张  | linux工匠|关注运维自动化|Python开发|linux高可用集群|数据库维护|性能提优|系统架构

红帽的getting started with kubernetes

k8s官网文档https://kubernetes.io/docs/getting-started-guides/centos/centos_manual_config/

pdf英文文档链接:https://pan.baidu.com/s/1jIhVoTS

最后编辑:
作者:bbotte
这个作者貌似有点懒,什么都没有留下。

留下一个回复

你的email不会被公开。