如何使用httpd镜像创建一个Deployment资源对象及其它关联
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,下文给大家带来如何使用httpd镜像创建一个Deployment资源对象及其它关联,希望能够给大家在实际运用中带来一定的帮助,负载均衡涉及的东西比较多,理论也不多,网上有很多书籍,今天我们就用在行业内
千家信息网最后更新 2026年11月02日如何使用httpd镜像创建一个Deployment资源对象及其它关联
下文给大家带来如何使用httpd镜像创建一个Deployment资源对象及其它关联,希望能够给大家在实际运用中带来一定的帮助,负载均衡涉及的东西比较多,理论也不多,网上有很多书籍,今天我们就用在行业内累计的经验来做一个解答。
1、使用httpd镜像创建一个Deployment资源对象
[root@master ~]# vim lvjianzhao.yaml #编写yaml文件kind: Deployment #指定要创建的资源对象类型apiVersion: extensions/v1beta1 #指定deployment所对应的API版本metadata: name: lvjianzhao-deploy #定义deployment的名称spec: replicas: 4 #定义需要创建pod副本的数量 template: metadata: labels: #指定pod的标签 user: lvjianzhao spec: containers: - name: httpd #指定容器的名称 image: httpd #指定基于哪个镜像运行容器[root@master ~]# kubectl apply -f lvjianzhao.yaml #执行编写的文件[root@master ~]# kubectl explain deployment #注:如果不知道某个资源对象所对应的API版本,可以通过此命令查看KIND: DeploymentVERSION: extensions/v1beta1 #这就是Deployment资源所对应的API版本 ........................#省略部分内容[root@master ~]# kubectl get deployment lvjianzhao-deploy #确定所执行的yaml文件生成了我们所需数量的pod查看其pod标签,是否是我们定义的label:
[root@master ~]# kubectl describe deployment lvjianzhao-deploy #查看这个资源对象的详细信息Name: lvjianzhao-deployNamespace: defaultCreationTimestamp: Thu, 07 Nov 2019 17:50:44 +0800Labels: "user=lvjianzhao" #这里就是该资源对象的标签2、创建一个svc资源对象与上述Deployment资源对象关联。且能够对外网提供服务。映射节点端口为:32123.

[root@master ~]# vim httpd-service.yaml #编写service的yaml文件kind: ServiceapiVersion: v1metadata: name: httpd-servicespec: type: NodePort #这里需要指定类型为"NodePort",否则默认是cluster IP selector: user: lvjianzhao #与deployment资源对象的这个标签进行关联 ports: - protocol: TCP port: 79 #这里指定要映射到的Cluster IP的端口 targetPort: 80 #这里指定的是要映射pod中的端口 nodePort: 32123 #这里指定的是映射到宿主机的端口[root@master ~]# kubectl apply -f httpd-service.yaml #执行该yaml文件[root@master ~]# kubectl get svc httpd-service #查看创建的svc(service)NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEhttpd-service NodePort 10.97.13.198 79:32123/TCP 2m1s#可以看到将指定的群集端口映射到了本地的32123 现在就可以使用client访问k8s群集中任意一个节点的32123端口,即可看到pod所提供的服务,如下:
[root@master ~]# kubectl describe svc httpd-service #查看该service的详细信息返回的信息如下(只能显示少量IP,剩下的只是被省略了,而不是未指定):
既然上面说到了,endpoint指定的都是后端pod的IP地址,那么就来查看验证一下,是否正确,如下:
[root@master ~]# kubectl get pod -o wide | awk '{print $6}' #输出后端pod的IP地址IP10.244.1.1810.244.2.2110.244.1.1710.244.2.20#可以确认查看的IP能对应上上面service的endpoint指定的IP查看svc映射endpoint的详细情况,并详细说明负载均衡的底层原理。
3、当我们做完上述操作后,client是可以访问我们pod提供的服务的(并且是负载均衡的效果),那么这是一个什么样的实现过程呢?依赖什么实现的?
其实,背后的原理并没有那么高大上,kube-proxy通过iptables的转发机制来实现负载均衡的效果的,先定义目标IP是service提供的群集IP,然后使用"-j"选项转发到其他iptables规则,如下:
[root@master ~]# kubectl get svc httpd-service | awk '{print $3}'#我们需要先查看到service的群集IPCLUSTER-IP 10.97.13.198[root@master ~]# iptables-save > a.txt #将iptables规则输出到文件中,方便我们查找[root@master ~]# vim a.txt #打开iptables规则搜索我们的群集IP,可以看到,当目标地址是群集IP地址时,就会转发到另一个规则"KUBE-SVC-X2P42VLQEZCHLPKZ",如下:
那么,现在继续搜索它转发到的规则上,如下:
上面的图中,就是与他实现负载均衡相关的策略的,我们一共四个pod,所以上图中的第一个规则使用了random的算法,只有0.25(1/4)的几率采用这个规则,当到达第二条规则后,则有0.33的几率,因为去除前一个pod,还剩下三个pod,10/3=0.33,这就是这个几率的由来,依次类推,当到达最后一个规则后,那么就不用指定几率了,肯定是它来处理这条请求。
附加:为node节点打标签,以便使pod运行在指定的节点。
[root@master ~]# kubectl label nodes node01 disktype=ssd #给节点node01打标签"disktype=ssd"(自定义的标签)#相应的yaml文件如下:kind: DeploymentapiVersion: extensions/v1beta1metadata: name: httpdspec: revisionHistoryLimit: 10 replicas: 3 template: metadata: labels: app: httpd-server spec: containers: - name: httpd image: 192.168.1.1:5000/httpd:v1 ports: - containerPort: 80 nodeSelector: //指定标签选择器disktype: ssd
看了以上关于如何使用httpd镜像创建一个Deployment资源对象及其它关联,如果大家还有什么地方需要了解的可以在行业资讯里查找自己感兴趣的或者找我们的专业技术工程师解答的,技术工程师在行业内拥有十几年的经验了。
资源
对象
规则
标签
文件
端口
均衡
节点
镜像
关联
几率
地址
就是
信息
版本
服务
在行
业内
原理
名称
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
咖啡网
互联网科技园
国智互联网科技
互联网科技公司税收优惠
互联网与科技发展
互联网科技宣传片
一五八零互联网科技
科技类的互联网平台
新华互联网科技校企合作
中国的互联网科技企业的崛起
互联网科技教育视频
黑科技闪耀互联网之光
互联网科技公司实习生
阿里互联网科技企业
互联网公司属于科技吗
科技信息时代互联网发展
黑龙江互联网科技公司
六子台科技互联网展会
利用互联网等科技手段
如何强化互联网金融科技
互联网科技公司经营范围
卓越科技(互联网 )
天扬科技互联网广告
中国最先进互联网科技公司
贵州叶脉互联网科技有限公司所属行业
受益于互联网科技的高速发展
互联网科技大奖都有哪些公司
中国新注册互联网科技
互联网的科技体现在哪里
如何强化互联网金融科技