K8s知识点梳理
1.k8s是一个编排容器的工具,其实也是管理应用的全生命周期的一个工具,从创建应用,应用的部署,应用提供服务,扩容缩容应用,应用更新,都非常的方便,而且可以做到故障自愈,例如一个服务器挂了,可以自动将这个服务器上的服务调度到另一个主机上进行运行,无需进行人工干涉。2.k8s可以更快的更新新版本,打包应用,更新的时候可以做到不用中断服务,服务器故障不用停机,从开发环境到测试环境的迁移极其方便,一个配
1. k8s是一个编排容器的工具,其实也是管理应用的全生命周期的一个工具,从创建应用,应用的部署,
应用提供服务,扩容缩容应用,应用更新,都非常的方便,而且可以做到故障自愈,例如一个服务器
挂了,可以自动将这个服务器上的服务调度到另一个主机上进行运行,无需进行人工干涉。
2. k8s可以更快的更新新版本,打包应用,更新的时候可以做到不用中断服务,服务器故障不用停机,
从开发环境到测试环境的迁移极其方便,一个配置文件搞定,一次生成image,到处运行。。。
3. k8s的全生命周期管理
在k8s进行管理应用的时候,基本步骤:
创建集群,部署应用,发布应用,扩展应用,更新应用。
4. 创建集群:为什么要使用集群
使用集群,create cluster是为了掩盖底层的无能,在各种环境中,底层的硬件各不相同,有的
是各种低廉的服务器,有的各种云环境,有的是各种vm,有的各种host machine,想要屏蔽底层
的细节,增强可靠性和稳定性,从而需要创建集群。
创建集群的好处就是,统一对外提供接口,无须进行各种复杂的调用,提供更好的可靠性,服务器
宕机那么频繁,物理磁盘那么容易损坏,无须担心,集群同意进行调配,提供更好的性能,组合
集群中各个极其的计算存储网络资源,提供更好的TPS和PS;提供横向扩容的能力,在进行横向
扩容的时候,性能基本上能呈线性增长。
创建集群:
- kubectl init 进行初始化, 创建一个master 节点
- kubectl join xxx 创建一个node节点,加入这个集群。
- k8s在物理上进行划分的时候,划分了两种类型的主机,一个master节点,主要用来调度,
控制集群的资源等功能。
node节点,主要是用来运行容器的节点,也就是运行服务的节点。 - master用来控制,用来存储各种元数据,node节点是一个工作节点,真正来干活的
- node节点定时与master进行通信,通过kebelet进程来汇报信息。
- kubectl get nodes -o wide
kubectl cluster -info
5. 部署应用
(1)使用集群的主要目标:用来提供服务,让开发的应用程序能在集群上运行,从而需要让
开发能运行一个应用来进行测试。
kubectl run kel --image=nginx:1.7.9 --port=80
(2)一条指令就能运行一个服务,有了image之后就是这么简单。所以,在开发完成程序之后,
需要将程序打包成image,然后放到registry中,然后就能运行应用了。
(3)在部署完成应用之后,就可以看到应用的名称,期望状态是运行一个pod,当前有一个pod,
活动的也是一个,还有启动的时间。
(4)在k8s里,集群调度的最小单元就是一个pod,一个pod可以是一个容器,也可以是多个容器,
例如你运行了一个程序,其中使用了nginx,使用mysql了,使用了jetty,那么可以将这三个
使用在同一个pod中,对他们提供统一的调配能力,一个pod只能运行在一个主机上,而一个
主机上可以有多个pod.
(5)使用pod相当于一个逻辑主机,pod的存在主要是让几个紧密连接的几个容器之间共享资源,
例如ip地址,共享存储等信息。如果直接调度容器的话,那么几个容器可能运行在不同的主机
上,这样就增加了系统的复杂性。
6. 发布应用
发布应用主要就是对外提供服务,在集群中,创建的ip地址等资源,只有在同一个集群中才能访问,每个pod也有独一的IP地址,当有多个pod提供相同的服务的时候,就需要有负载均衡的能力,从而这里就涉及到一个概念就是service,专门用来提供服务的。
kubectl expose deployment kel --type=“NodePort” --port=80
服务主要是用来提供外界访问的接口,服务可以关联一组pod,这些pod的ip地址
各不相同,而service相当于一个复杂均衡的vip,用来指向各个pod,当pod的ip地址
发生改变之后,也能做到自动进行负载均衡,在关联的时候,service和pod之间
主要通过label来关联,也就是标签(-l表示为label).
kubectl get services -l run=kel
kubectl get pods -l run=kel
kubectl describe services/kel
4.扩容缩容
在业务上线之后,碰到了双十一怎么办?扩容。。。只要有一个pod,那么就可以
产生无数个pod。
kubectl scale deployments/kel --replicas=2
过了双十一怎么办,缩容。。。
kubectl scale deployments/kel --replicas=1
横向扩展的能力,每次扩容缩容的时候,这种会不会觉得很方便,一句话的事儿。不用创建vm,不用去部署中间件,不用去各种修改配置,这就是自动化。
5.更新
有新版本了,我要发布,那么
kubectl set image deployments/kel kel=nginx:1.8
kubectl rollout undo deployments/kel
滚动更新,根据新的image创建一个pod,分配各种资源,然后自动负载均衡,删除老的pod,然后继续更新,不会中断服务。
常用指令
1、kubectl get po --查看微服务
2、kubectl get ns --查看命名空间
3、kubectl get cm–查看配置文件
4、kubectl get po -n ns名称–查看某一命名空间下的微服务
5、kubectl get pv --查看持久卷
6、kubectl get pvc --查看持久卷申请
7、kubectl logs -f 微服–查看微服日志
8、kubectl get cs–检查k8s集群是否健康
9、kubectl cluster -info --查看集群信息
10、kubectl get po -o wide–查看微服具体运行在哪个从节点node上。
11、kubectk get po -o yaml --查看pod的详细信息
12、kubectl get po -o json --以json的格式输出pod 信息
13、kubectl exec -it pod名 -n /bin/bash --进入pod
14、kubectl create 文件名.yaml --重建资源
15、kubectl apply -f 文件名.yaml --是配置文件资源重新生效
16、kubectl delete po -n --删除pod,让集群自动分配重启
17、删除各种资源
kubectl delete -f 文件名
kubectl delete pod pod名
kubectl delete rc rc名
kubectl delete service service名
kubectl delete pod --all
18、部署pod在ns上
kubectl -n ns run gaogetest --images=镜像名称 --replicas=1
更多推荐
所有评论(0)