重庆网站建设狐灵科技,网站开发 前端 外包,个人网站可以挂广告吗,wordpress evernote前言
在k8s集群中#xff0c;service和pod都可以通过域名的形式进行相互通信#xff0c;换句话说#xff0c;在k8s集群内#xff0c;通过service和pod的域名#xff0c;可以直接访问内部应用#xff0c;不必在通过service ip地址进行通信#xff0c;一般的#xff0c;…前言
在k8s集群中service和pod都可以通过域名的形式进行相互通信换句话说在k8s集群内通过service和pod的域名可以直接访问内部应用不必在通过service ip地址进行通信一般的我们创建service的时候不建议指定service的clusterIP而是让k8s自动为service分配一个clusterIP这样service的IP是自动分配但是service名字总是固定的吧这样在集群内部就可以直接通过service的域名来连接即可如前端pod应用直接通过service域名来连接后端pod。
service的域名
完整的service域名解析是..svc. 其中servicename为service名称namespace为service所处的命名空间clusterdomain是k8s集群设计的域名后缀默认为cluster.local。 一般的在生产环境中我们可以直接简写为.即可后面的部分保持默认即可。如果pod与svc是在同一个命名空间那么直接写svc即可如 。
演示示例
下面我们通过创建一个deployment和service然后创建一个测试pod在测试pod中通过访问service域名的形式访问应用验证service域名是否正常。如下所示
# 创建一个deployment有3个副本
cat deployment-nginx.yaml EOF
apiVersion: apps/v1
kind: Deployment
metadata:labels:env: devtiar: frontname: deployment-nginxnamespace: default
spec:replicas: 3selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- image: nginx:1.7.9imagePullPolicy: IfNotPresentname: nginx-containerports:- containerPort: 80name: httpprotocol: TCPrestartPolicy: Always
EOF
#创建一个service用于反向代理上面创建的deployment的pod
cat svc-deployment-nginx.yaml EOF
apiVersion: v1
kind: Service
metadata:labels:app: nginxname: svc-deployment-nginxnamespace: default
spec:ports:- name: nginx-portnodePort: 30080port: 80protocol: TCPtargetPort: httpselector:app: nginxtype: NodePort
EOF
kubectl apply -f svc-deployment-nginx.yaml
kubectl apply -f deployment-nginx.yaml 在pod中测试直接访问service的域名
# 在测试pod中直接访问service的域名
[rootmaster service]# kubectl exec -it pod-command -- /bin/sh #进入到测试pod中
/ # wget http://svc-deployment-nginx.default.svc.cluster.local:80
#这个pod没有curl命令所以通过wget命令下载
Connecting to svc-deployment-nginx.default.svc.cluster.local:80 (10.111.193.190:80) #下载成功
saving to index.html
index.html 100% |*******************************************************************************************************************************************************************************************| 612 0:00:00 ETA
index.html saved/ # cat index.html #下载成功这是nginx的index文件说明通过service域名访问是正常的
!DOCTYPE html
html
head
titleWelcome to nginx!/title
stylebody {width: 35em;margin: 0 auto;font-family: Tahoma, Verdana, Arial, sans-serif;}
/style
/head
body
h1Welcome to nginx!/h1
pIf you see this page, the nginx web server is successfully installed and
working. Further configuration is required./ppFor online documentation and support please refer to
a hrefhttp://nginx.org/nginx.org/a.br/
Commercial support is available at
a hrefhttp://nginx.com/nginx.com/a./ppemThank you for using nginx./em/p
/body
/html
/ # wget http://svc-deployment-nginx.default.svc.cluster.local:80 #完整的写法
wget http://svc-deployment-nginx.default:80 #带命名空间写法
wget http://svc-deployment-nginx:80 #如果pod与svc在同一个命名空间可以将命名空间省略不写