记录《kubernetes权威指南》中单机应用栈例子(1)

单机部署一个mysql+tomcat应用栈

前期准备工作

使用centos7虚拟机

  • 关闭centos防火墙

    systemctl stop firewalld
    systemctl disable firewalld
  • 安装etcd及kubernetes软件
    yum update -y
    yum install etcd kubernetes -y
  • 安装好的各软件版本如下
kubectl: v1.5.2
docker: 1.13.1
etcd: 3.2.15
  • 修复配置文件

    • docker配置文件/etc/sysconfig/docker
修改为OPTIONS=‘--selinux-enabled=false‘
    • kubernetes apiserver配置文件 /etc/kubernetes/apiserver
KUBE_ADMISSION_CONTROL参数中删除ServiceAccount
  • 使用daocloud加速器

注册daocloud用户后,运行daocloud加速器脚本

curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://41379ba5.m.daocloud.io
# 由于网络原因,最好使用加速器。
# 如果使用daocloud后,出现镜像下载问题,可以考虑替换为阿里云加速器
# 实际上就是编辑了/etc/docker/daemon.json文件
# 如果docker镜像下载出现问题,优先考虑网络问题。
  • 启动服务
systemctl start etcd
systemctl start docker
systemctl start kube-apiserver
systemctl start kube-controller-manager
systemctl start kube-scheduler
systemctl start kubelet
systemctl start kube-proxy
  • 下载镜像
# mysql镜像
docker pull daocloud.io/library/mysql:latest
# tomcat镜像
docker pull kubeguide/tomcat-app:v2

[[email protected] docker]# docker images
REPOSITORY                       TAG                 IMAGE ID            CREATED             SIZE
daocloud.io/library/mysql        latest              80bbf861367a        3 days ago          445 MB
docker.io/kubeguide/tomcat-app   v2                  00beaa1d956d        21 months ago       358 MB

启用mysql容器服务

定义rc模板,命名为mysql-rc.yaml

apiVersion: v1
kind: ReplicationController
metadata:
  name: mysql
spec:
  replicas: 1
  #定义RC标签选择
  selector:
    app: mysql
  #定义Pod模板
  template:
    metadata:
      labels:
        app: mysql
    spec:
      #Pod内容器定义
      containers:
        - name: mysql
          # image需要指定docker images输出中的那个mysql镜像
          image:  daocloud.io/library/mysql:latest
          ports:
          - containerPort: 3306
          env:
          - name: MYSQL_ROOT_PASSWORD
            value: "123456"

注意image选择,是与书中不一致的,因为我们下载的mysql镜像是daocloud仓库中的镜像

创建好文件后,发布到kubernetes集群中

[[email protected] kube-test]# kubectl create -f mysql-rc.yaml
replicationcontroller "mysql" created
[[email protected] kube-test]# kubectl get rc
NAME      DESIRED   CURRENT   READY     AGE
mysql     1         1         0         10s
[[email protected] kube-test]# kubectl get pods
NAME          READY     STATUS              RESTARTS   AGE
mysql-nrcvt   0/1       ContainerCreating   0          27s

这个ContainerCreating状态是异常状态,会一直持续,不会进入到running状态

查看pods状态时,

kubectl describe pods mysql-nrcvt
......
......
  1m    5s  5   {kubelet 127.0.0.1}     Warning FailedSync  Error syncing pod, skipping: failed to "StartContainer" for "POD" with ImagePullBackOff: "Back-off pulling image \"registry.access.redhat.com/rhel7/pod-infrastructure:latest\""

发现是无法下载这个镜像,于是我手动pull这个镜像,发现如下报错:

[[email protected] kube-test]# docker pull registry.access.redhat.com/rhel7/pod-infrastructure:latest
Trying to pull repository registry.access.redhat.com/rhel7/pod-infrastructure ...
open /etc/docker/certs.d/registry.access.redhat.com/redhat-ca.crt: no such file or directory

搜索这个报错,发现可以通过yum install rhsm -y解决
运行该命令后,删除掉之前部署的rc,

[[email protected] kube-test]# kubectl delete rc mysql
replicationcontroller "mysql" deleted
[[email protected] kube-test]# kubectl get pods
No resources found.

重新部署

[[email protected] kube-test]# kubectl create -f mysql-rc.yaml
replicationcontroller "mysql" created
[[email protected] kube-test]# kubectl get rc
NAME      DESIRED   CURRENT   READY     AGE
mysql     1         1         1         7s
[[email protected] kube-test]# kubectl get pods
NAME          READY     STATUS    RESTARTS   AGE
mysql-nbwvp   1/1       Running   0          13s

mysql正常运行了。
查看正在运行的docker,发现有两个

[[email protected] kube-test]# docker ps
CONTAINER ID        IMAGE                                                        COMMAND                  CREATED              STATUS              PORTS               NAMES
f58905ddee64        daocloud.io/library/mysql:latest                             "docker-entrypoint..."   About a minute ago   Up About a minute                       k8s_mysql.9ef925be_mysql-nbwvp_default_30da097b-4ee8-11e8-a311-000c29f71e04_7ac92ba7
99382a3dcbf0        registry.access.redhat.com/rhel7/pod-infrastructure:latest   "/usr/bin/pod"           About a minute ago   Up About a minute                       k8s_POD.1d520ba5_mysql-nbwvp_default_30da097b-4ee8-11e8-a311-000c29f71e04_aad8e14a

原文地址:http://blog.51cto.com/duf0913/2112491

时间: 2024-10-10 15:48:41

记录《kubernetes权威指南》中单机应用栈例子(1)的相关文章

Kubernetes权威指南精彩语录

上述代码的风格和逻辑再也熟悉不过了:创建一个SchedulerServer对象,将命令行参数传入,并且进入SchedulerServer的Run方法,不死不休.--<Kubernetes权威指南> 源码导读 Kubernetes Scheduler Server是kube-scheduler进程实现的,它运行在Kubernetes的管理节点--master上并主要负责完成Pod到Node的调度过程.Kubernetes Scheduler Server跟踪Kubernetes集群中所有Node

Kubernetes权威指南精彩段落

看到上述两段代码,你可能会有一种"开门复动竹, 疑是故人来"的感觉.的确,这段代码经笔者反复考证后认定:100%高仿kubernetes Controller Server中的代码.连传说中的谷歌大神也能copy代码,所以我等凡人也可以安心了,因为我们可以做的更好,copy更多---<Kubernetes权威指南>之源码分析

hadoop学习笔记(七)——hadoop权威指南中天气数据运行

1) hdfs文件系统准备工作 a) # hadoop fs –ls /user/root #查看hdfs文件系统 b) # hadoop fs -rm /user/root/output02/part-r-00000 c) 删除文档,删除文件夹 d) # hadoop fs -rm –r /user/root/output02 e) # hadoop fs –mkdir –p input/ncdc f) 解压缩输入文件,hadoop无法识别.zip或者.rar g) # hadoop fs -

css权威指南学习笔记--第6章

line-height:定义文本行基线之间的距离 <p style="line-height: 20px;"> these are test words<br /> these are test words </p> 说到line-height就不能不说到行框中各个高度是怎么计算的,这里引用css权威指南中的图 文本行中的每个元素都会生成一个内容区,这由字体的大小确定.如果不存在其他因素(如line-height)那么这个内容区的高度就是行内框的高度

HTML5与CSS3权威指南之CSS3学习记录

title: HTML5与CSS3权威指南之CSS3学习记录 toc: true date: 2018-10-14 00:06:09 学习资料--<HTML5与CSS3权威指南>(第3版) 官方网站: 华章图书 书中所有代码下载链接: 链接:http://pan.baidu.com/s/1c0oGMn2 密码:f7zt 选择器 属性选择器 [att=val]选择器--选择属性att值为val的元素 [att*=val]选择器--选择属性att值包含val的元素 [att^=val]选择器--选

JavaScript权威指南第13章 web浏览器中的javascript

13.1 客户端javascript window对象是所有的客户端javascript特性和api的主要接入点.表示浏览器的一个窗口,可以通过window对象来引用它. window 的方法 alert() prompt() confirm() 13.2 在html里嵌入javascript 4种方法: 内联:放置在<script></script>标签之中 外部引入:<script src="   "></script> html程序

【MongoDB】探讨《MongoDB权威指南》书籍中的几点错误

今天进一步学习MongoDB,学习资料是<MongoDB权威指南>,详细见如下封面: 在阅读过程中发现了如下错误: 第一处:P29页批量插入,在书中讲到可以利用batchInsert函数实现批量插入,我运行时候发现系统提示没有这个方法.我用的软件是2.6.4.我以为是版本过低,然后下载2.6.6 最新版本进行测试,报同样的错误: Property 'batchInsert' of object student.students is not a function 后来查询用命令:db.stud

Cocos2D-x权威指南:通过节点控制屏幕中的全体渲染对象

本节,已经能够利用我们眼下所学的知识做出一些有趣的东西.之前已经说过,CCNode类没有贴图,也就是说在屏幕上单独建立一个节点是没有不论什么效果的,可是能够通过这个"无形"的节点来控制屏幕上的节点.如今就開始吧!     1. 增加节点    新建一个项目,并在HelloWorldScene.cpp文件里的init函数中做如代码清单3-2的代码所看到的的改动.     代码清单3-2 增加节点 bool HelloWorld::init() { if ( !CCLayer::init(

javascript权威指南(中文版)中的一些错误

本人目前正在学习js,使用的是javascript权威指南(中文版),学习的时候发现一些细节上的错误,若是我的错误,欢迎指正 1.P11------多了“我们称为 原文为 return Math.sqrt(a * a + 我们称为b * b); 2.P16------canvas错写为vanvas 原文为 第21章涵盖基于HTML的<vanvas>标签的客户端API,用来进行任意形状图形的绘制. 3.P38------“5代表星期五”错写为“5代表星期一” 原文为 later.getDay()