利用k8s yaml配置文件起一个http能够让外部访问
1、首先建一个http的Deployment
apiVersion: apps/v1 #版本信息
kind: Deployment #文件类型
metadata: #Deployment资源的元数据信息 name 和 labels必须有
name: http-deployment
labels:
app: http-label
spec: #spec部分是该Deployment的规格说明。
replicas: 3 #副本数 意味着http的pod 会有三个
selector: #defines how the Deployment finds which Pods to manage 与下面的template定义的标签一致
matchLabels:
app: http-label
template: #每个pod的模板配置信息在这里
metadata: #pod资源的元数据信息 labels必须有 不然上面的selector会选不到
labels:
app: http-label
spec: #spec描述Pod的规格,此部分定义Pod中每一个容器的属性,name和image是必需的。
containers:
- name: httpd
image: httpd
ports:
- containerPort: 80
2、可以通过 kubectl apply -f http.yaml 来启动上面的资源
[root@master1 test]# kubectl apply -f http.yaml
deployment.apps/http-deployment configured
[root@master1 test]# kubectl get pods
NAME READY STATUS RESTARTS AGE
http-deployment-6bd68845b-dhw72 0/1 ContainerCreating 0 7s
http-deployment-6bd68845b-fqf8c 1/1 Running 0 33m
http-deployment-6bd68845b-ksrt5 0/1 ContainerCreating 0 7s
3、这个时候pod里面的http服务只能集群内部访问 看一下pod的网络ip 这是虚拟的ip 通过net实现的
[root@master1 test]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
http-deployment-6bd68845b-dhw72 1/1 Running 0 15m 10.130.209.237 node1 <none> <none>
http-deployment-6bd68845b-fqf8c 1/1 Running 0 48m 10.130.209.235 node1 <none> <none>
http-deployment-6bd68845b-ksrt5 1/1 Running 0 15m 10.130.209.238 node1 <none> <none>
4、k8s集群内部所有节点都可以访问到
[root@master1 test]# curl 10.130.209.237
<html><body><h1>It works!</h1></body></html>
[root@master1 test]# curl 10.130.209.235
<html><body><h1>It works!</h1></body></html>
[root@master1 test]# curl 10.130.209.238
<html><body><h1>It works!</h1></body></html>
[root@master1 test]#
5、外面怎么访问呢 k8s用 service 来做到的 pod的上层是service 两者通过iptables交互
新建一个service的yaml httpSvc.yaml
apiVersion: v1
kind: Service #类型这次是Service了
metadata:
name: http-svc
spec:
type: NodePort #NodePort没有 外网不能访问 只能集群访问service接口 nodeport和service也是通过iptables转发的
selector:
app: http-label #这里的标签 表示这个服务会选择这种标签的pod 作为他的后端服务 他来当pod外层的service 统一服务
ports:
- protocol: TCP
nodePort: 30001 #NodePort端口 用来外部访问的 如果不设置,会随机选一个范围(30000~32767)
port: 8080
targetPort : 80
6、同理启动一下 kubectl apply -f httpSvc.yaml
7、看看服务是否都ok
[root@master1 test]# kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
http-svc NodePort 172.30.169.160 <none> 8080:30001/TCP 52m
kubernetes ClusterIP 172.30.0.1 <none> 443/TCP 25h
8、可以集群访问
[root@master1 test]# curl 172.30.169.160:8080
<html><body><h1>It works!</h1></body></html>
[root@master1 test]#
9、外网访问 我的主机ip是 192.168.10.1 在浏览器 输入http://192.168.10.1:30001/

ps:每次访问的是随机去pod的节点的 所以很好的负载均衡了
利用k8s yaml配置文件起一个http能够让外部访问的更多相关文章
- Kubernetes 笔记 05 yaml 配置文件详解
本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. Hi,大家好, ...
- K8S之YAML配置文件
通过 YAML 配置文件 部署 Deployment 使用命令(类似 docker-compose) // 部署 kubectl create -f xxx.yml // 删除 kubectl del ...
- k8s yaml说明
k8s yaml # yaml格式的pod定义文件完整内容: apiVersion: v1 #必选,版本号,例如v1 kind: Pod #必选,Pod metadata: ...
- Appium + python -yaml配置文件
在线安装:pip install yaml import yamlimport os # 获取当前脚本所在文件夹路径curpath = os.path.dirname(os.path.realpath ...
- k8s yaml示例
Kind选择 https://kubernetes.io/zh/docs/concepts/workloads/controllers/ Pod示例 apiVersion : v1 #版本v1 kin ...
- python的logging模块之读取yaml配置文件。
python的logging模块是用来记录应用程序的日志的.关于logging模块的介绍,我这里不赘述,请参见其他资料.这里主要讲讲如何来读取yaml配置文件进行定制化的日志输出. python要读取 ...
- Spring Boot入门(一):使用IDEA创建Spring Boot项目并使用yaml配置文件
由于公司最近在做技术转型(从.Net转Java),因此自己也开启了学习Java之路.学习Java怎么能不学习这几年这么火的Spring Boot框架,由于自己有总结的习惯,因此会把学习的过程以博客的形 ...
- saltstack主机管理项目:编写插件基类-获取主机列表-提取yaml配置文件(四)
一.编写插件基类 1.目录结构 1.我是如何获知我有多少种系统? 当客户端第一连接过来的时候,我就已经把这些文件存下来了 ,存在到哪里了?存到数据库了 每次对主机发送命令的动作时,我从库里把数据取出来 ...
- python笔记14-读取yaml配置文件(pyyaml)
yaml简介 1.yaml [ˈjæməl]: Yet Another Markup Language :另一种标记语言.yaml 是专门用来写配置文件的语言,非常简洁和强大,之前用ini也能写配置文 ...
随机推荐
- 痞子衡嵌入式:在IAR开发环境下将关键函数重定向到RAM中执行的三种方法
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是在IAR开发环境下将关键函数重定向到RAM中执行的三种方法. 嵌入式项目里应用程序代码正常是放在 Flash 中执行的,但有时候也需要将 ...
- make CLI Comfortable When Working in Multiple Directoies
alias alias is command-line counterpart of hotstring of AutoHotkey, for example: alias vboat='vi ~/d ...
- Shell-07-文本处理grep
文本处理sed sed:流编辑器,过滤和替换文本 工作原理:sed命令将当前处理的行读入模式空间进行处理,处理完把结果输出,并且清空模式空间. 然后再将下一行读入模式空间进行处理输出,以此类推,直到最 ...
- Asp.Net Core 导入Excel数据到Sqlite数据库并重新导出到Excel
Asp.Net Core 导入Excel数据到Sqlite数据库并重新导出到Excel 在博文"在Asp.Net Core 使用 Sqlite 数据库"中创建了ASP.NET Co ...
- 一个tomcat配置多个不同端口的项目
1.将要同时启动的项目放入不同的webapps文件夹中 2.修改tomcat安装目录下的conf-->setting.xml文件 <?xml version="1.0" ...
- miniFTP项目实战六
项目简介: 在Linux环境下用C语言开发的Vsftpd的简化版本,拥有部分Vsftpd功能和相同的FTP协议,系统的主要架构采用多进程模型,每当有一个新的客户连接到达,主进程就会派生出一个ftp服务 ...
- protocol buffer的高效编码方式
目录 简介 定义一个简单的message Base 128 Varints 消息体的结构 符号整数 字符串 嵌套的消息 总结 简介 protocol buffer这种优秀的编码方式,究竟底层是怎么工作 ...
- linux /etc/passwd详解
文件概述 Linux 系统中的 /etc/passwd 文件,是系统用户配置文件,存储了系统中绝大部分的用户基本信息,并不是所有,所有用户都可以对此文件执行读操作.(如果通过其他方式创建管理的用户名. ...
- UDP与TCP的对比
参考网址:https://blog.csdn.net/m0_38121874/article/details/82914634 1.报头(1)TCP协议报头TCP指传输控制协议,其报头格式如下: TC ...
- java Math.random()生成从n到m的随机整数
Java中Math类的random()方法可以生成[0,1)之间的随机浮点数.而double类型数据强制转换成int类型,整数部分赋值给int类型变量,小数点之后的小数部分将会丢失. 如果要生成[0, ...