Kubernetes 1.19.0——服务svc(2)
时间:2022-07-28
本文章向大家介绍Kubernetes 1.19.0——服务svc(2),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
一个pod如何访问到另外一个应用程序的svc
[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
[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
[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
如果通过变量的方式:
1.只能获取相同namespace里的变量
2.变量的获取有先后顺序,引用的变量必须要先创建
[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
[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
- Web 前端利器Emmet 的HTML用法总结
- Web 前端利器Emmet 的CSS 用法总结
- 响应式 HTML 邮件制作之三个实例
- java知识点归纳
- EaseMobile 主题导航菜单设置小图标的方法(图文+视频教程)
- NEC css规范
- DW Mobile Switcher:移动设备识别切换主题插件
- 揭秘技术大国以色列
- mix-blend-mode 混合模式 background-blend-mode 背景混合模式 isolation:isolate 隔离
- wp_nav_menu 函数经Walker_Nav_Menu 类自定义导航菜单HTML
- css3 RGBA 红色R+绿色G+蓝色B+Alpha通道
- css3 gradient 渐变
- TwentyTwenty:一个图片特效Jquery 插件
- 何为实在
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法