2.1 kubernetes安装与配置
2.1.1安装kubernetes
CPU和内存:
Master至少1core和2G内存
Node至少1core和2G内存
Linix操作系统:
基于X86_64架构的各种Linux发行版本,Red Hat、CentOS、Fedora、Ubuntu等,
Kernel版本要求在3.10及以上
推荐:CentOS7、Red Hat Linux7
Docker 1.9版本以上
etcd 2.0版本及以上
kubernetes官方下载地址:
https://github.com/kubernetes/kubernetes/releases
Kubernetes Master节点安装部署etcd、kube-apiserver、kube-controller-manager、kube-scheduler服务进程。工作节点Node上仅需要部署kubelet和kube-proxy服务进程。
Kubernetes还提供了一个“all-in-one”的hyperkube程序来完成对以上服务进程的启动。
2.1.2配置和启动Kubernetes服务
Kubernetes的Master和Node之间有大量的网络通信,安全的做法是在防火墙上配置个组件需要相互通信的端口,在一个安全的内部网络环境中可以关闭防火墙服务。
系统CentOS7.3
关闭防火墙
systemctl status firewalld
systemctl disable firewalld
systemctl stop firewalld
1、安装etcd、kubernetes
yum install etcd kubernetes
默认版本:
docker 1.12.6
etcd-3.1.0
kubernetes-1.5.2-0.2
kubernetes-client 1.5.2
kubernetes-master 1.5.2
kubernetes-node 1.5.2
1)etcd服务
安装后配置文件位置:
cat /usr/lib/systemd/system/etcd.service
cat /etc/etcd/etcd.conf
验证etcd是否正常启动
[root@cent7-2 docker]# etcdctl cluster-health
member 9f3258a917a82a2a is healthy: got healthy result from http://localhost:2379
cluster is healthy
2)kube-apiserver服务
cat /usr/lib/systemd/system/kube-apiserver.service
cat /etc/kubernetes/apiserver
3)kube-controller-manager服务
cat /usr/lib/systemd/system/kube-controller-manager.service
cat /etc/kubernetes/controller-manager
4)kube-scheduler服务
cat /usr/lib/systemd/system/kube-scheduler.service
cat /etc/kubernetes/scheduler
将服务加入开机启动
systemctl enable kube-apiserver.service
systemctl start kube-apiserver.service
systemctl enable kube-controller-manager
systemctl start kube-controller-manager
systemctl enable kube-scheduler
systemctl start kube-scheduler
通过systemctl status
查看状态,“running”表示启动成功
到此Master服务启动完成。
2、Node上的kubelet、kube-proxy服务
1)kubelet服务
cat /usr/lib/systemd/system/kubelet.service
cat /etc/kubernetes/kubelet
2)kube-proxy服务
cat /usr/lib/systemd/system/kube-proxy.service
cat /etc/kubernetes/proxy
systemctl enable kubelet.service
systemctl start kubelet.service
systemctl enable kube-proxy
systemctl start kube-proxy
kubelet默认采用想Master自动注册本Node的机制,在Master上查看各Node的状态,状态为Ready表示Node已经成功注册并且状态可用。
[root@cent7-2 log]# kubectl get nodes
NAME STATUS AGE
127.0.0.1 Ready 23h
等所有的Node状态都是Ready后,一个Kubernetes集群就启动完成了,接下来可以创建Pod、RC、Service等资源对象来不是Docker容器应用了。
2.1.3Kubernetes集群安全设置(有兴趣的朋友网上搜索下,这里不做介绍)
1、基于CA签名的双向数字证书认证方式
2、基于HTTP BASE或TOKEN的简单认证方式
2.1.4Kubernetes版本升级
Kubernetes版本升级应考虑正在运行的容器不受影响,应对集群中的各Node逐个进行隔离,然后等待在其上运行的容器全部执行完成,再更新该Node上的kubelet和kube-proxy服务,将全部Node都更新完成后,最后更新Master的服务。
通过官网获取最新版本的二进制kubernetes.tar.gz,解压提取文件;
逐个隔离Node,等待在其上运行的全部容器工作完成,更新kubelet和kube-proxy服务文件,然后重启这两个服务;
更新Master的kube-apiserver、kube-controller-manager、kube-scheduler服务文件并启动;
2.1.5内网中的Kubernetes相关配置(无法访问Internet)
企业内部无法访问Internet,对于这样的企业,通过创建一个内部的私有Docker Registry,并修改一些Kubernetes配置,来启动内网中的Kubernetes集群。
1)Docker Private Registry(私有Docker镜像库)
安装参考:https://docs.docker.com/registry/deploying/
2)kubelet配置
cat /etc/kubernetes/kubelet
# pod infrastructure container
KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest"
修改为:
KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=kubeguide/google_containers/pause-amd64:3.0"
#systemctl restart kubelet
不能访问Internet的情况还是很少的
2.1.6Kubernetes核心服务配置详解
每个服务可以通过运行“cmd --help”命令进行查看,其中cmd为具体的服务,kube-apiserver、kube-controller-manager、kube-scheduler、kubelet、kube-proxy等,在对应的配置文件中添加“--参数名=参数取值”的语句完成参数设置。
参考官网 或 Kubernetes权威指南:从Docker到Kubernetes实践全接触(第2版)
![Kubernetes系列02:Kubernetes配置及参数说明_第1张图片](http://img.e-com-net.com/image/info8/c1d3c041f5254c7e85c3cbdce0fa645c.jpg)
![Kubernetes系列02:Kubernetes配置及参数说明_第2张图片](http://img.e-com-net.com/image/info8/ea5f818915354e6faedb48dac84fb950.jpg)
![Kubernetes系列02:Kubernetes配置及参数说明_第3张图片](http://img.e-com-net.com/image/info8/7331db550a3c48a2940bceb47355a2d9.jpg)
![Kubernetes系列02:Kubernetes配置及参数说明_第4张图片](http://img.e-com-net.com/image/info8/9060b197a3bd49fe9aab3a31598d3d09.jpg)
![Kubernetes系列02:Kubernetes配置及参数说明_第5张图片](http://img.e-com-net.com/image/info8/947477e8d26a4ea48a1489494fa4ca71.jpg)
![Kubernetes系列02:Kubernetes配置及参数说明_第6张图片](http://img.e-com-net.com/image/info8/41014984477b49db99b83e65d515388e.jpg)
![Kubernetes系列02:Kubernetes配置及参数说明_第7张图片](http://img.e-com-net.com/image/info8/ae7fa28b4a2e4fd3a0d812cdd3f311e1.jpg)
![Kubernetes系列02:Kubernetes配置及参数说明_第8张图片](http://img.e-com-net.com/image/info8/a7bb7219979044af8aadbaa23f5e9ff5.jpg)
![Kubernetes系列02:Kubernetes配置及参数说明_第9张图片](http://img.e-com-net.com/image/info8/49dc568558ee499d9d0c5a23108c25f1.jpg)
![Kubernetes系列02:Kubernetes配置及参数说明_第10张图片](http://img.e-com-net.com/image/info8/f7a9f332ee44404d8a40ac01ce3dccef.jpg)
![Kubernetes系列02:Kubernetes配置及参数说明_第11张图片](http://img.e-com-net.com/image/info8/50d748ae990046dba89e1549d04f9110.jpg)
![Kubernetes系列02:Kubernetes配置及参数说明_第12张图片](http://img.e-com-net.com/image/info8/efb2b0a4881844d2bae8f1374a629f5d.jpg)
![Kubernetes系列02:Kubernetes配置及参数说明_第13张图片](http://img.e-com-net.com/image/info8/e46144e85d8646daaf9e9673948c2e24.jpg)
![Kubernetes系列02:Kubernetes配置及参数说明_第14张图片](http://img.e-com-net.com/image/info8/eaa1dd4b6bba42ebaa2c93a2ab1062d1.jpg)
![Kubernetes系列02:Kubernetes配置及参数说明_第15张图片](http://img.e-com-net.com/image/info8/03ad61a6c33c4844b1b25532a1e10d41.jpg)
![Kubernetes系列02:Kubernetes配置及参数说明_第16张图片](http://img.e-com-net.com/image/info8/27b8973577ec46f8aedf27a210ba402a.jpg)
![Kubernetes系列02:Kubernetes配置及参数说明_第17张图片](http://img.e-com-net.com/image/info8/adcababdea75486981bc7bafc918554d.jpg)
![Kubernetes系列02:Kubernetes配置及参数说明_第18张图片](http://img.e-com-net.com/image/info8/d5767640f5b24cb7845bc067786e59e4.jpg)
![Kubernetes系列02:Kubernetes配置及参数说明_第19张图片](http://img.e-com-net.com/image/info8/c82b16b6b8094044a66ab82832b906d1.jpg)
![Kubernetes系列02:Kubernetes配置及参数说明_第20张图片](http://img.e-com-net.com/image/info8/e40fcf9125d74b1f971eab152297e2cf.jpg)
![Kubernetes系列02:Kubernetes配置及参数说明_第21张图片](http://img.e-com-net.com/image/info8/beb7a122778b4aadb4cdc4ff64ee2d1c.jpg)
![Kubernetes系列02:Kubernetes配置及参数说明_第22张图片](http://img.e-com-net.com/image/info8/43c89791265f4e32ba3ada370b7265c0.jpg)
![Kubernetes系列02:Kubernetes配置及参数说明_第23张图片](http://img.e-com-net.com/image/info8/f7fa1a527835467daf8b7e0d8a04d5e7.jpg)
![Kubernetes系列02:Kubernetes配置及参数说明_第24张图片](http://img.e-com-net.com/image/info8/4ae93c5f0da84144a6a11262b1798b54.jpg)
![Kubernetes系列02:Kubernetes配置及参数说明_第25张图片](http://img.e-com-net.com/image/info8/1667b19f371043618eb3bbe9e0048c9e.jpg)
![Kubernetes系列02:Kubernetes配置及参数说明_第26张图片](http://img.e-com-net.com/image/info8/fc062409759c47369d827d1f265662b6.jpg)
![Kubernetes系列02:Kubernetes配置及参数说明_第27张图片](http://img.e-com-net.com/image/info8/0bfb008b87d04192889d70c7caca72f9.jpg)
![Kubernetes系列02:Kubernetes配置及参数说明_第28张图片](http://img.e-com-net.com/image/info8/bc5d109bd7cd4ba9bf323e24861f5db7.jpg)
![Kubernetes系列02:Kubernetes配置及参数说明_第29张图片](http://img.e-com-net.com/image/info8/9b3ac5d3922a4bf085e5c2f799c19feb.jpg)
2.1.7Kubernetes集群网络配置方案
Kubernetes本身并不会对跨主机容器网络进行设置,这需要额外的工具,除谷歌公有云GCE平台提供网络设置,开源工具包括flannel、Open vSwitch、Weave、Calico等
1)flannel(覆盖网络)
2)Open vSwitch(虚拟交换机)
3)直接路由
参考:http://blog.csdn.net/carter115/article/details/50986701
2.2 kubectl命令行工具用法详解
kubectl作为客户端CLI工具,可以让用户通过命令行的方式对Kubernetes集群进行操作。
2.2.1 kubectl用法概括
#kubectl [command] [TYPE] [NAME] [flags]
(1)command:子命令,用于操作kubernetes集群资源对象的命令,如create、delete、describe、get、apply
(2)TYPE:资源对象的类型,区分大小写,能以单数形式、复数形式或者简写形式表示。
例如以下3种TYPE是等价的
#kubectl get pod pod1
#kubectl get pods pod1
#kubectl get po pod1
(3)NAME:资源对象的名称,区分大小写。如果不指定名称,则系统将返回属于TYPE的全部对象列表,例如kubectl get pods将返回所有pod的列表
(4)flags:可选参数,例如使用“-s”指定apiserver的URL地址而不用默认值
可操作的资源对象:
获取多个pod信息:
#kubectl get pods pod1 pod2
获取多种对象信息:
#kubectl get pod/pod1 rc/rc1
同时应用多个yaml文件:
#kubectl get pod -f pod1.yaml -f pod2.yaml
#kubectl create -f pod1.yaml -f rc1.yaml -f service1.yaml
2.2.2 kubectl子命令详解
![Kubernetes系列02:Kubernetes配置及参数说明_第31张图片](http://img.e-com-net.com/image/info8/d65ddbb5714841c6be2b28103693b69e.jpg)
![Kubernetes系列02:Kubernetes配置及参数说明_第32张图片](http://img.e-com-net.com/image/info8/2d905237e8e14f58be5478080912996e.jpg)
![Kubernetes系列02:Kubernetes配置及参数说明_第33张图片](http://img.e-com-net.com/image/info8/76e00ca01f9247cebb767620dae4f1fc.jpg)
![Kubernetes系列02:Kubernetes配置及参数说明_第34张图片](http://img.e-com-net.com/image/info8/0595ded58b44481d99bd70d34968a7e5.jpg)
2.2.3 kubectl参数列表
![Kubernetes系列02:Kubernetes配置及参数说明_第35张图片](http://img.e-com-net.com/image/info8/961794becb9146f9ad8e427a5acf544d.jpg)
![Kubernetes系列02:Kubernetes配置及参数说明_第36张图片](http://img.e-com-net.com/image/info8/9eb438bd45364765ac9ab9ab75f76494.jpg)
2.2.4 kubectl输出格式
![Kubernetes系列02:Kubernetes配置及参数说明_第37张图片](http://img.e-com-net.com/image/info8/5bbba808c4414ed1b5732aace328db41.jpg)
![Kubernetes系列02:Kubernetes配置及参数说明_第38张图片](http://img.e-com-net.com/image/info8/e0587087679d4c9e8eb28346375fd63b.jpg)
2.2.5 kubectl操作示例
![Kubernetes系列02:Kubernetes配置及参数说明_第39张图片](http://img.e-com-net.com/image/info8/83d44555ac26485b833cdead2840fc21.jpg)
![Kubernetes系列02:Kubernetes配置及参数说明_第40张图片](http://img.e-com-net.com/image/info8/6940853e7e55411bba0fa53955cd3476.jpg)
![Kubernetes系列02:Kubernetes配置及参数说明_第41张图片](http://img.e-com-net.com/image/info8/c77bfb2099494dd09db557ef6d7551af.jpg)
下一博文将使用Guestbook实现Hello World
参考:
Kubernetes网络配置方案
http://blog.csdn.net/carter115/article/details/50986701
CentOS7.3.1611部署k8s1.5.2集群
http://jerrymin.blog.51cto.com/3002256/1898243