一天学习k8s

 https://ke.qq.com/webcourse/index.html#cid=366778&term_id=100436087&taid=3842496786700474

k8s集群的节点

 命名空间

 

 容器组就是pod

 

 

 

 

 

 一个pod中定义了两个容器

 

 进入到my-pod中国的名称为java的容器

 pod与控制器的关系

 

 

 

 控制器中国的app标签要和pod中的app名称一致,这样控制器好关联对应标签的pod

pod创建成功之后,我们要暴露pod让外部访问,外部访问是通过service访问内部pod的

 

 deployment中部署的应用名称为web,service暴露的应用名称也是web,service对外暴露的端口是80,pod中部署的应用端口为8080.暴露的类型为nodeport会随机的为在node节点上面为service生成一个ip地址和端口

对于的ymal文件如下

service创建成功之后,我们可以查看service

 在k8s集群上面就随机为service创建了一个ip和端口,如果要通体k8s的node节点的IP地址访问pod,需要使用32672端口

192.168.31.63是k8snode的IP,32672是对于的端口

 

 

 扩容web这个应用的pod,这里pod扩容也依赖k8s的node节点的资源

 

 

 在微服务中部署一个应用就对应一个service,一个service下面存在多个pod

service和pod进行关联,在service的yaml中可以看到

 service与pod的关联是通过tcp在7层进行负载均衡的

 第一ClusterIp:就是为service生成一个虚拟的IP地址和端口,例如10.0.0.1:8080,通过这个统一的地址和端口负载均衡到内部的pod

第二种是Nodeport:会为k8s的节点生成一个端口,外部必须使用节点的IP加上生产的端口访问,访问该节点下面部署的pod,

 

 这里使用NodePort类型也会生成一个cluster-ip 10.10.0.15,集群内部访问就是可以使用10.0.0.15加上service的80端口只能在k8s的节点上访问,只能登录k8s的集群内部在集群内部访问,访问集群内部的pod

如果集群外部要访问就只能使用k8s节点的地址如192.168.7.18:32385这个地址来访问节点下面的pod

 service底层访问pod底层是通过linux底层的iptables来实现pod访问的负载均衡的,当pod有变动的时候,都会更新iptables会影响service的性能,后面又引入了ipvs,service底层的代码位于kuber-proy组件来实现的

原文地址:https://www.cnblogs.com/kebibuluan/p/13233382.html