k8s基础归结

查看所有集群节点是否在运行:kubectl get nodes

查看更多的信息:kubectl describe node ****

可显示输出节点的状态、cpu、内存数据、系统信息以及运行容器的节点等。

k8s部署应用程序通过:kubectl run的命令。例如:

kubectl run kubia --image=luksa/kubia(指定要运行的容器镜像) --port=8080(监听端口8080) --generator=run/v1(创建一个rc,而不是Deployment)

pod

一个pod是一组紧密相关的容器,它们总是一起运行在同一个工作节点上,以及同一个Linux命名空间里。其中每个pod都是独立的,并拥有自己的ip、主机以及进程。其中每个进程都在自己的容器中运行,通过kubectl get po的指令可以查看pod的相关信息。

访问web应用

由于每个pod都有自己的ip,但是这个ip是集群内部的,无法从外部进行访问。所以如果要让pod能够从外部访问,就需要通过服务对象对其进行公开,创建一个特殊的LoadBalancer类型的服务。创建服务的时候,要告知k8s对外暴露之前所创建的rc。

kubectl expose rc kubia --type==LoadBalancer --name kubia-http

同时可以使用kubectl get services的方式来列出服务。kubectl get svc的方式列出服务并查看是否分配了外部ip。

rc、pod与服务的关系

k8s的基本构件就是pod,但是pod不是直接创建的。具体指令是通过kubectl run来实现创造了一个rc,这主要用于创建pod实例。同时,为了实现pod能够从集群外部访问,需要让k8s将rc管理的所有pod有一个服务对外暴露。

其中pod内部有任意数量的容器,容器的内部都是Node.js进程,该进程绑定到8080端口,等待HTTP的请求。

rc的作用是始终确保一个运行中的pod实例。通常来说,rc用于复制pod或者说是创建多个pod的副本,并让它们保持运行状态。所以如果pod因为任何原因消失的时候,rc将会创建一个新的pod 来替换消失的pod。

而服务的作用就很明确了,由于pod的存在比较短暂,可能会在任何时候消失。原因很复杂,有可能是因为所在节点发生故障,也有可能是因为pod 被删除,又或者是因为pod被从某个健康的节点上剔除。无论哪种情况发生,rc都会提供一个新的pod,这个时候新的pod和拥有和旧的pod不同的ip,这个时候服务的作用就更加凸显出来了。服务可以解决不断变化的pod ip地址问题,以及在一个固定的ip和端口对外暴露多个pod。当服务被创建的时候,它会获得一个静态的ip,并保证在整个服务周期中都不会改变。客户端通过固定的ip连接服务,而不是直接连接pod。所以这会确保其中一个pod接收连接,同时不用关心当前pod运行的位置,以及它的ip。

猜你喜欢

转载自blog.csdn.net/weixin_42307828/article/details/93927631
k8s