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能够让外部访问的更多相关文章

  1. Kubernetes 笔记 05 yaml 配置文件详解

    本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. Hi,大家好, ...

  2. K8S之YAML配置文件

    通过 YAML 配置文件 部署 Deployment 使用命令(类似 docker-compose) // 部署 kubectl create -f xxx.yml // 删除 kubectl del ...

  3. k8s yaml说明

    k8s yaml # yaml格式的pod定义文件完整内容: apiVersion: v1       #必选,版本号,例如v1 kind: Pod       #必选,Pod metadata:   ...

  4. Appium + python -yaml配置文件

    在线安装:pip install yaml import yamlimport os # 获取当前脚本所在文件夹路径curpath = os.path.dirname(os.path.realpath ...

  5. k8s yaml示例

    Kind选择 https://kubernetes.io/zh/docs/concepts/workloads/controllers/ Pod示例 apiVersion : v1 #版本v1 kin ...

  6. python的logging模块之读取yaml配置文件。

    python的logging模块是用来记录应用程序的日志的.关于logging模块的介绍,我这里不赘述,请参见其他资料.这里主要讲讲如何来读取yaml配置文件进行定制化的日志输出. python要读取 ...

  7. Spring Boot入门(一):使用IDEA创建Spring Boot项目并使用yaml配置文件

    由于公司最近在做技术转型(从.Net转Java),因此自己也开启了学习Java之路.学习Java怎么能不学习这几年这么火的Spring Boot框架,由于自己有总结的习惯,因此会把学习的过程以博客的形 ...

  8. saltstack主机管理项目:编写插件基类-获取主机列表-提取yaml配置文件(四)

    一.编写插件基类 1.目录结构 1.我是如何获知我有多少种系统? 当客户端第一连接过来的时候,我就已经把这些文件存下来了 ,存在到哪里了?存到数据库了 每次对主机发送命令的动作时,我从库里把数据取出来 ...

  9. python笔记14-读取yaml配置文件(pyyaml)

    yaml简介 1.yaml [ˈjæməl]: Yet Another Markup Language :另一种标记语言.yaml 是专门用来写配置文件的语言,非常简洁和强大,之前用ini也能写配置文 ...

随机推荐

  1. [SQL]修改和删除基本表

    修改基本表 SQL语言用alter table语句修改基本表,其一般格式如下: alter table <表名> add <列名> <数据类型> [<列级完整 ...

  2. [TensorFow2.0]-MNIST手写数字识别

    本人人工智能初学者,现在在学习TensorFlow2.0,对一些学习内容做一下笔记.笔记中,有些内容理解可能较为肤浅.有偏差等,各位在阅读时如有发现问题,请评论或者邮箱(右侧边栏有邮箱地址)提醒. 若 ...

  3. SpringCloud升级之路2020.0.x版-12.UnderTow 简介与内部原理

    本系列代码地址:https://github.com/HashZhang/spring-cloud-scaffold/tree/master/spring-cloud-iiford 在我们的项目中,我 ...

  4. 文件流FileStream技术出现的理由漫谈

    输入输出的重要性: 输入和输出功能是Java对程序处理数据能力的提高,Java以流的形式处理数据.流是一组有序的数据序列,根据操作的类型,分为输入流和输出流.      程序从输入流读取数据,向输出流 ...

  5. contos7 安装weblogic10.3 _wls1036_generic.jar

    环境:CentOS7+jdk1.8 weblogic下载地址1: http://www.oracle.com/technetwork/cn/middleware/weblogic/downloads/ ...

  6. Ajax 与 Struts 1

    Xml配置 <action path="/product/product/validateCurrencyDecimalSupport" type="com.neu ...

  7. 通过refresh响应头,定时刷新或隔n秒跳转页面

    package day08; import java.io.IOException; import javax.servlet.ServletException; import javax.servl ...

  8. 解决servlet中get方式中中文乱码问题前驱(一):装饰者模式再理解

    package day02; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; ...

  9. JavaWeb之文件上传、下载

    时间:2016-12-17 18:07 --文件上传概述上传不能使用BaseServlet1.文件上传的作用    例如网络硬盘,就是用来上传和下载文件的.2.文件上传对表单的限制    1)必须使用 ...

  10. NLP与深度学习(二)循环神经网络

    1. 循环神经网络 在介绍循环神经网络之前,我们先考虑一个大家阅读文章的场景.一般在阅读一个句子时,我们是一个字或是一个词的阅读,而在阅读的同时,我们能够记住前几个词或是前几句的内容.这样我们便能理解 ...