一天学习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组件来实现的
posted on 2020-07-04 00:12 luzhouxiaoshuai 阅读(187) 评论(0) 编辑 收藏 举报