Kubernetes学习

《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.参数详情


RC



svc

《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,容器可通过文件的方式使用

你可能感兴趣的:(Kubernetes学习)