从今天起,咱们开始研究k8s ,之因此叫k8s,是由于Kubernetes这个单词的K和S之间还有8个字母,为了方便书写,就直接用8来代替.国外也会偷懒,这就是证据哈哈,固然这是国际惯例前端
Kubernetes能够干吗?如下就是他能作的事情,若是你是运维还不开始学习,不久的未来就完全失业了:
python
自动化容器的部署和复制docker
随时扩展或收缩容器规模vim
将容器组织成组,而且提供容器间的负载均衡centos
很容易地升级应用程序容器的新版本api
提供容器弹性,若是容器失效就替换它,等等.缓存
实际上,使用Kubernetes只需一个部署文件,使用一条命令就能够部署多层容器(前端,后台等)的完整集群:
安全
$ kubectl create -f single-config-file.yaml
接下来咱们一块儿搭建单点集群:
网络
实验环境:
负载均衡
坑一:
若是你是新手,建议使用全新的安装环境,从网络到yum源都是刚刚配置好的,这样不容易出错,要否则,稍有不慎就会一堆报错,而你百度也百度不出来结果
第一步: 把/etc/yum.repos.d/ 文件夹下全部的文件移动到/usr/local/benfei/ 文件夹下. 由于我是用的虚拟机,在操做的时候,我直接把文件删除了(这个在生产环境下是不容许的,切记)
1 df -h 2 umount /dev/sr0 //这里是卸载开机自动挂载的光驱 3 cd /etc/yum.repos.d/ 4 ls 5 rm -rf ./*
第二步: 设置网络yum源,而后进行更新,设置缓存
7.wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 8 ls 9 yum update 10 yum makecache
第三步: 关闭防火墙,centos7默认使用firewall为防火墙,而Kubernatesd Master与工做Node之间会有大量的网络通讯,安全的作法是在防火墙上配置各类须要相互通信的端口号,在一个安全的内部网络环境中能够关闭防火墙服务
11 systemctl disable firewalld.service 12 systemctl stop firewalld.service
第四步: 安装etcd和kubernetes软件,在安装的时候docker就顺带安装了.
13 yum install -y etcd kubernetes
第五步:配置修改
14 vim /etc/sysconfig/docker
将配置文件里OPTIONS 修改为以下图所示的内容
15 vim /etc/kubernetes/apiserver
此处将配置文件中的框起来的地方的ServiceAccount去掉
若是不去掉是会报错的
第六步: 按照以下步骤启动全部服务,若是启动成功,不会有任何提示.
16 systemctl start etcd 17 systemctl start docker 18 systemctl start kube-apiserver.service 19 systemctl start kube-controller-manager.service 20 systemctl start kube-scheduler.service 21 systemctl start kubelet.service 22 systemctl start kube-proxy.service
如今一个单机版的K8S集群环境就安装成功了,接下来咱们就能够在这个单机版的集群中愉快的玩耍了.
[root@localhost yum.repos.d]# kubectl get svc NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes 10.254.0.1 <none> 443/TCP 1h
能够看到,K8s服务已经跑起来了.
在这里简单介绍下YAML配置文件,咱们在下一个篇章里会用到
YAML读做/ˈjæməl/,他的本质就是一种通用的数据串行化格式.自己不须要安装,咱们在学python时候也会常常用到.
基本语法以下:
对大小写比较敏感
使用缩进表示层级关系
使用YAML用于k8s的定义有不少好处,以下:
便捷性:你将再也不须要添加大量的参数到命令行中执行命令
可维护性:YAML文件能够经过源头控制,能够跟踪每次的操做
灵活性:经过YAML你将能够建立比命令行更加复杂的结构
YAML的结构类型,只要知道两种就能够: Lists和Maps
在K8S这里只要用如下几个用法就能够了
对象是一组键值对,使用冒号来结构来表示
apiVersion: v1
kind: ReplicationController
这里定义了一个RC
所谓的RC就是保证在同一时间可以运行指定数量的Pod副本
你能够理解为Pod就是用来包裹容器的,在k8s中咱们不会直接操做容器,而是把容器包装成Pod在进行管理.Pod是k8s里面最基本的操做单元.
说多了,这里理解写法就能够了,A: B的格式