一、pod概述
■ port
port是k8s集群内部访问service的端口,即通过clusterIP: port可以访问到某个service
■ nodePort
nodePort是外部访问k8s集群中service的端口,通过nodeIP: nodePort可以从外部访问到某个service
■ targetPort
targetPort是pod的端口,从port和nodePort来的流量经过kube-proxy流入到后端pod的targetPort上,最后进入容器
■ containerPort
containerPort是pod内部容器的端口,targetPort映射到containerPort
注:
■ 从外部访问
从nodeport端口经过kube-proxy,kube-proxy再把请求给targetPort,targetPort会映射到容器的containerPort,直接访问服务
■ 从内部访问
Port端口经过kube-proxy把请求给targetPort,targetPort会映射到容器的containerPort,直接访问服务
1.1、pod的特点
- 最小部署单元
- 一组容器的集合
- 一个Pod中的容器共享网络命名空间
- Pod是短暂的 (pod无法重启)
1.2、Pod容器分类
■ infrastructure container 基础容器
● 维护整个Pod网络空间
● node节点操作
● 查看容器的网络
[root@node01 ~]# cd /opt/kubernetes/
[root@node01 kubernetes]# ls
bin cfg ssl
[root@node01 kubernetes]# cd cfg
[root@node01 cfg]# ls
bootstrap.kubeconfig flanneld kubelet kubelet.config kubelet.kubeconfig kube-proxy kube-proxy.kubeconfig
[root@node01 cfg]# vim kubelet
#每次创建Pod时候就会创建,与Pod对应的,对于用户是透明的
[root@node01 ~]# docker ps
■ initcontainers 初始化容器(可以提供依赖环境,为业务容器提供初始化环境)
先于业务容器开始执行,原先Pod中容器是并行开启,现在进行了改进
■ container 业务容器
并行启动
1.3、镜像拉取策略(image PullPolicy)
■ IfNotPresent:默认值,镜像在宿主机上不存在时才拉取
■ Always:每次创建Pod都会重新拉取一次镜像
■ Never:Pod永远不会主动拉取这个镜像
[root@master01 ~]# kubectl edit deployment/nginx-deployment
1.4、自动测试命令的正确性,并不执行创建
[root@master01 ~]# kubectl run nginx-deployment --image=nginx --port=80 --replicas=3 --dry-run #可检查语法
1.5、查看生成yaml格式
[root@master01 ~]# kubectl run nginx-deployment --image=nginx --port=80 --replicas=3 --dry-run -o yaml #o为out,输出
[root@master01 ~]# kubectl run nginx-deployment --image=nginx --port=80 --replicas=3 --dry-run -o yaml > /opt/nginx-test.yaml
1.6、查看生成json格式
[root@master01 ~]# kubectl run nginx-deployment --image=nginx --port=80 --replicas=