前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Kubernetes 1.19.0——服务svc(2)

Kubernetes 1.19.0——服务svc(2)

原创
作者头像
gz_naldo
修改2020-10-26 12:03:31
5020
修改2020-10-26 12:03:31
举报
文章被收录于专栏:CloudComputingCloudComputing

一个pod如何访问到另外一个应用程序的svc

在worker节点下载wordpress和mysql镜像
在worker节点下载wordpress和mysql镜像
创建wordpress和mysql的pod
创建wordpress和mysql的pod
代码语言:javascript
复制
[root@vms61 chap9-svc]# kubectl run blog --image=hub.c.163.com/library/mysql:latest --image-pull-policy=IfNotPresent --env="MYSQL_ROOT_PASSWORD=redhat"
pod/blog created
[root@vms61 chap9-svc]# kubectl run blog --image=hub.c.163.com/library/wordpress:latest --image-pull-policy=IfNotPresent --env="WORDPRESS_DB_HOST=XXXXX" --env="WORDPRESS_DB_USER=root" --env="WORDPRESS_DB_PASSWORD=redhat" --dry-run=client -o yaml > blog.yaml

代码语言:javascript
复制
[root@vms61 chap9-svc]# kubectl get svc
NAME   TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
db     ClusterIP   10.100.102.138   <none>        3306/TCP   136m
[root@vms61 chap9-svc]# cat blog.yaml 
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: blog
  name: blog
spec:
  containers:
  - env:
    - name: WORDPRESS_DB_HOST
      value: 10.100.102.138
    - name: WORDPRESS_DB_USER
      value: root
    - name: WORDPRESS_DB_PASSWORD
      value: redhat
    image: hub.c.163.com/library/wordpress:latest
    imagePullPolicy: IfNotPresent
    name: blog
    resources: {}
  dnsPolicy: ClusterFirst
  restartPolicy: Always
status: {}
[root@vms61 chap9-svc]# kubectl apply -f blog.yaml 
pod/blog created
[root@vms61 chap9-svc]# kubectl get pods
NAME   READY   STATUS    RESTARTS   AGE
blog   1/1     Running   0          7s

创建一个svc,通过32178访问,会直接跳过数据库设置
创建一个svc,通过32178访问,会直接跳过数据库设置
代码语言:javascript
复制
[root@vms61 chap9-svc]# kubectl expose --name=blog pod blog --port=80 --type=NodePort
service/blog exposed
[root@vms61 chap9-svc]# kubectl get svc
NAME   TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
blog   NodePort    10.98.75.125     <none>        80:32178/TCP   4s
db     ClusterIP   10.100.102.138   <none>        3306/TCP       142m

代码语言:javascript
复制
如果通过变量的方式:
1.只能获取相同namespace里的变量 
2.变量的获取有先后顺序,引用的变量必须要先创建

通过变量的方式发现
通过变量的方式发现
代码语言:javascript
复制
[root@vms61 chap9-svc]# kubectl get pods
NAME   READY   STATUS    RESTARTS   AGE
db     1/1     Running   0          28m
[root@vms61 chap9-svc]# cat blog.yaml 
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: blog
  name: blog
spec:
  containers:
  - env:
    - name: WORDPRESS_DB_HOST
      value: $(DB_SERVICE_HOST)
    - name: WORDPRESS_DB_USER
      value: root
    - name: WORDPRESS_DB_PASSWORD
      value: redhat
    image: hub.c.163.com/library/wordpress:latest
    imagePullPolicy: IfNotPresent
    name: blog
    resources: {}
  dnsPolicy: ClusterFirst
  restartPolicy: Always
status: {}
[root@vms61 chap9-svc]# kubectl apply -f blog.yaml 
pod/blog created
[root@vms61 chap9-svc]# kubectl get pods
NAME   READY   STATUS    RESTARTS   AGE
blog   1/1     Running   0          2s
db     1/1     Running   0          28m
[root@vms61 chap9-svc]# kubectl get svc
NAME   TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
blog   NodePort    10.107.97.68    <none>        80:31462/TCP   2m57s
db     ClusterIP   10.105.66.169   <none>        3306/TCP       27m

效果是一样的
效果是一样的

通过DNS的方式发现---推荐

在kube-system里有dns,可以自动发现所有命名空间里的服务的clusterIP

所以,在同一个命名空间里,一个服务访问另外一个服务的时候,可以直接通

过服务名来访问

只要创建了一个服务(不管在哪个ns里创建的),都会自动向kube-system里的

DNS注册

如果是不同的命名空间,可以通过 服务名.命名空间名来访问

服务名.命名空间.svc.cluster.local

直接将value写成db服务名,可通过dns自动解析到
直接将value写成db服务名,可通过dns自动解析到
代码语言:javascript
复制
[root@vms61 chap9-svc]# cat blog.yaml 
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: blog
  name: blog
spec:
  containers:
  - env:
    - name: WORDPRESS_DB_HOST
      value: db
    - name: WORDPRESS_DB_USER
      value: root
    - name: WORDPRESS_DB_PASSWORD
      value: redhat
    image: hub.c.163.com/library/wordpress:latest
    imagePullPolicy: IfNotPresent
    name: blog
    resources: {}
  dnsPolicy: ClusterFirst
  restartPolicy: Always
status: {}
[root@vms61 chap9-svc]# kubectl apply -f blog.yaml 
pod/blog created
[root@vms61 chap9-svc]# kubectl get pods
NAME                    READY   STATUS    RESTARTS   AGE
blog                    1/1     Running   0          3s
db                      1/1     Running   0          64m
web1-6464d54bd7-dxz7x   1/1     Running   0          19m
web1-6464d54bd7-ktbfr   1/1     Running   0          19m
web1-6464d54bd7-m4qg5   1/1     Running   0          19m
[root@vms61 chap9-svc]# kubectl get svc
NAME   TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
db     ClusterIP   10.105.66.169    <none>        3306/TCP   63m
svc1   ClusterIP   10.108.124.206   <none>        80/TCP     10m
[root@vms61 chap9-svc]# kubectl expose --name=blog pod blog --port=80 --type=NodePort
service/blog exposed
[root@vms61 chap9-svc]# kubectl get svc
NAME   TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
blog   NodePort    10.110.42.125    <none>        80:31672/TCP   3s
db     ClusterIP   10.105.66.169    <none>        3306/TCP       65m
svc1   ClusterIP   10.108.124.206   <none>        80/TCP         11m

依旧能达到如上效果
依旧能达到如上效果

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档