1. targetPort 容器的端口
容器真正暴露的端口(使用DockerFile中的EXPOSE),targetPort是pod上的端口,從port和nodePort上來的流量,經過kube-proxy流入到後端pod的targetPort上,最後進入容器內。
例如docker.io官方的nginx暴露的是80端口。docker.io官方的nginx容器的DockerFile。
2. port
k8s集羣內部服務之間相互訪問service的端口。
kubernetes中的服務之間訪問的端口。有些服務可能不需要被外界訪問,比如數據庫,儘管mysql容器暴露了3306端口參考mysql的DockerFile,但是集羣內其他容器需要通過33306端口訪問該服務,外部機器不能訪問mysql服務,因爲他沒有配置NodePort類型。
3. nodePort
k8s集羣中發發布完service之後,如果需要外部訪問,nodePort是一種訪問方式,即nodePort是提供給外部流量訪問k8s集羣中service使用的端口。
比如一個Web應用需要被其他用戶訪問,那麼需要配置type=NodePort,而且配置nodePort=30001,那麼其他機器就可以通過瀏覽器訪問scheme://node:30001訪問到該服務,例如http://node:30001。