《Kubernetes权威指南第2版》学习(一) Kubernetes是什么 - 刘大飞 - 博客园
总结:
1.Kubernetes作为当前唯一被广泛认可和看好的Docker分布式解决方案
2.它不局限于任何一种语言用JAVA、Go、C++还是用Python编写的服务,都可以映射为Kubernetes的service
3.一个节点运行几百个Pod,Pod里运行一个Pause容器,将一组密切相关的服务进程放入同一个Pod。给每个Pod贴上一个标签,给相应的Service定义标签选择器(Label Selector),解决了Service与Pod的关联问题。
4. Service是分布式集群的核心,一个Service有唯一指定的名字,有一个虚拟IP和端口号,被映射到一组容器上
《Kubernetes权威指南第2版》学习(三)RC学习 - 刘大飞 - 博客园
总结:
1.ReplicationController(RC)创建集群
#kubectl create -f mysql-rc.yaml
查看创建的RC:
# kubectl get rc
查看pod运行情况:
# kubectl get pods
查看docker运行情况:
# docker ps | grep mysql
2.Service(svc)创建服务
# kubectl create -f mysql-svc.yaml
查看创建的Service:
# kubectl get svc
3.参数详情
《Kubernetes权威指南第2版》学习(四)kubernetes基本概念和术语 - 刘大飞 - 博客园
总结:
1.etcd是键-值存储仓库,用来配置共享和服务发现。将Node, pod, Services通过K8s提供的kubectl工具进行增、删、改、查等操作将其保存在etcd中持久化存储,实现自动控制,纠错的高级功能。
2.Label是Key=value键值对。Label可以附加到各种资源上,例如Node, Pod, Service, RC等。
Label + Label selector共同构成K8S中最核心的应用模型,使得被管理对象精确的分组管理。
3.是K8s的最重要也是最基本的概念。每个Pod有一个特殊的被称为“根容器”的Pause容器和若干个业务容器。
Pod的定义如下:
查看资源使用情况
#kubectl describe pod XXX
第五章 运行应用 - 刘大飞 - 博客园
这里必须说明一下Deployment 和RC不一样
K8S中RC与Deployment的区别 - 波神 - 博客园
总结:
Deployment
kubectl create namespace liufei # 创建namespace
kubectl run nginx-deployment -n liufei --image=nginx:1.7.9 --replicas=2 # 运行deployment
kubectl get deployment -n liufei # 查看deployment
kubectl describe deployment -n liufei # 查看deployment更详细的信息
kubectl get replicaset -n liufei # 查看副本控制器
kubectl describe replicaset -n liufei # 副本控制器详细信息
kubectl apply -f nignx.yml
DaemonSet每个Node上最多只能运行一个副本。
Deployment部署的副本Pod会分布在各个Node上,每个node都可能运行好几个副本。
Job
一次性任务,比如批处理,运行完就销毁,定期执行的任务, 比如Cronjob。
第七章 Rolling update - 刘大飞 - 博客园
kubectl get deployment httpd -o wide
kubectl describe deployment httpd
apply -f httpd.v1.yml --record
apply -f httpd.v2.yml --record
apply -f httpd.v3.yml --record
查看历史部署版本
kubectl rollout history deployment httpd deployments "httpd"
回退
kubectl rollout undo deployment httpd --to-revision=3 # 回退到revision=3的那个版本
第八章 Health Check - 刘大飞 - 博客园
Health Check
Liveness探测
总结
通过用户自定义来检查机器的健康性
例如:判断文件是否存在来判断容器是否出现故障。
Readiness探测
Readiness探测:告诉k8s什么时候可以将容器加入到Service负载均衡池中,对外提供服务。
liveness 和 Readiness 比较:
(1)默认情况二者都是看容器退出时返回值是否为0,来判断是否失败。
(2)二者的配置方法完全相同,不同的是探测失败后的处理:Liveness重启容器;Readiness将容器设置为不可用。
(3) 二者独立执行,没有依赖。Liveness探测判断容器是否需要重启来自愈; Readiness探测容器是否已经准备好对外提供服务。
Volume
持久化保存pod容器中的的数据,可以使用K8s Volume。
emptyDIr Volume: 对于容器来说是持久的,对于Pod不是。当Pod从节点删除时,Volume的内容也会被删除。但是如果只是容器被销毁而Pod存在,则volume不受影响。生命周期与Pod一致。
Pod中的所有容器都可以共享Volume,例如Pod有两个容器: producer 和 consumer,它们共享一个Volume. Producer 写, consumer 读。
Secret
敏感信息,比如用户名、密码等。Secret会以Volume的形式被mount到Pod,容器可通过文件的方式使用