在CoreOS上运行Kubernetes(一)

1 篇文章 0 订阅
1 篇文章 0 订阅
Kubernetes是谷歌开源的容器集群管理系统,它提供一个统一的工作流程管理运行在集群中的容器Kubernetes引入容器仓的概念,通过容器仓我们可以把一组容器作为一个逻辑上独立的服务部署。容器仓的工作原理与当前的一个非常流行的部署模式相匹配,那就是一个容器只运行一个服务。使用Kubernetes很容易做到在一个物理机或集群中运行多个容器仓,从而提高资源的利用率与系统的高可用性。Kubernetes同时提供容器仓的运行状况监控功能,用于保证容器仓在集群中正常运行。
Kubernetes提供的优秀集群协调服务主要依靠分布式键值存储系统etcd。etcd项目使用CoreOS发起并维护的。etcd用于在整个集群中保存和备份Kubernetes的系统数据,依靠Raft一致性算法,etcd可以做到计算机硬件与网络引起的故障恢复。将Kubernetes与etcd同时部署在CoreOS中能够提供更强大的功能,因为CoreOS就是为前文所说的高并发、高可用而构建的操作系统。
现在我们开始使用Kubernetes
保持一个轻松的心情跟随着下文的指导完成Kubernetes的安装配置,并启动一个容器仓运行Redis数据库服务。首先我们需要保证CoreOS正常运行,单节点的CoreOS即可保证下文所描述的操作正常执行。参考CoreOS的官方文档,选择合适的平台安装CoreOS。其次需要下载Kubernetes的一些组件到CoreOS实例中。
为了简单起见,我们下载Kubernetes的所有组件,这些组件包括:
  • apiserver
  • controller-manager
  • kubecfg
  • kubelet
  • proxy
登陆CoreOS并执行如下命令:
 
sudo mkdir -p /opt/kubernetes/bin 
sudo chown -R core: /opt/kubernetes
cd /opt/kubernetes
wget https://github.com/kelseyhightower/kubernetes-coreos/releases/download/v0.0.1/kubernetes-coreos.tar.gz
tar -C bin/ -xvf kubernetes-coreos.tar.gz


以上命令执行完以后,Kubernetes的所有组件都下载到了/opt/kubernetes/bin目录下。Kubernetes运行时依赖docker和etcd,然而这两个组件是CoreOS默认支持的,因此就不需要另外安装了。虽然CoreOS推荐将第三方应用程序在docker容器中运行,但是CoreOS确实支持Kubernetes直接在操作系统上运行。启动Kubernetes各组件的最佳方式是创建systemd unit文件并使用systemctl命令。我们通过git下载相关文件:
git clone https://github.com/kelseyhightower/kubernetes-coreos.git
sudo cp kubernetes-coreos/units/* /etc/systemd/system/

启动Kubernetes前需保证etcd已经启动:
sudo systemctl start etcd
使用systemd units文件我们依次执行如下命令:
sudo systemctl start kubernetes-apiserver
sudo systemctl start kubernetes-controller-manager
sudo systemctl start kubernetes-kubelet
sudo systemctl start kubernetes-proxy

恭喜你!你已经成功将Kubernetes在CoreOS上运行。
创建Kubernetes容器仓
容器仓是Kubernetes分组容器与定义逻辑部署单元的基本方式。下面是Redis数据库容器仓的配置文件:
{
  "id": "redis",
  "desiredState": {
    "manifest": {
      "version": "v1beta1",
      "id": "redis",
      "containers": [{
        "name": "redis",
        "image": "dockerfile/redis",
        "ports": [{
          "containerPort": 6379,
          "hostPort": 6379 
        }]
      }]
    }
  },
  "labels": {
    "name": "redis"
  }
}
我们发现容器仓的配置描述了Docker容器和端口映射,容器仓配置文件同样定义了用于服务发现的标签。我们将在下一节详细讨论服务发现,但是现在你只需要知道这个标签用于其他工具发现我们使用Kubernetes提交的容器仓。我们使用kubecfg 命令行工具与Redis容器仓配置文件创建Redis数据库容器仓。
/opt/kubernetes/bin/kubecfg -h http://127.0.0.1:8080 -c kubernetes-coreos/pods/redis.json create /pods
(这条命令的执行速度取决于下载docker下镜像的速度)
如果一切顺利Redis数据库容器仓已经成功运行了,我们可以通过Redis客服端使用docker0网络接口连接我们的容器仓验证:
docker run -t -i dockerfile/redis /usr/local/bin/redis-cli -h 172.17.42.1
(其中IP地址172.17.42.1可能因不同的运行环境而不同,使用docker inspect 命令查看容器IP地址)
使用kubecfg命令显示运行中的容器仓:
/opt/kubernetes/bin/kubecfg -h http://127.0.0.1:8080 list /pods
删除不在使用的容器仓:
/opt/kubernetes/bin/kubecfg -h http://127.0.0.1:8080 delete /pods/redis
总结
希望这篇博客能够证明Kubernetes可以运行在除GCE以外的其他Linux平台中。CoreOS集成Kubernetes特别简单,因为CoreOS对某些Kubernetes依赖的重要服务提供默认支持,比如docker、etcd、systemd。你需要做的仅仅是安装Kubernetes二进制包与systemd units。下一篇博客我们开始讨论Kubernetes的强大能力,包括集群容器管理,服务发现已经Linux容器全生命周期管理。











  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值