本文主要是介绍k8s、Deployment多副本资源详解、SERVICE通信、案例一nginx端口暴漏、案例二tomcat端口暴漏、案例三jenkins端口暴漏,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 案例一
- 创建SERVICE
- 案例一nginx端口暴露
- 案例二tomcat端口暴露
- 案例三jenkins端口暴漏
使用yaml创建Deployment
k8s deployment资源创建流程:
1. 用户通过 kubectl 创建 Deployment。
2. Deployment 创建 ReplicaSet。
3. ReplicaSet 创建 Pod。
对象的命名方式是:子对象的名字 = 父对象名字 + 随机字符串或数字
Deployment是一个定义及管理多副本应用(即多个副本 Pod)的新一代对象,与Replication Controller相比,它提供了更加完善的功能,使用起来更加简单方便
案例一
例1:
apiVersion: apps/v1
kind: Deployment
metadata:name: nginx-deployment
spec:selector:matchLabels:app: nginxreplicas: 2template:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:1.7.9ports:- containerPort: 80
启动一个pod 看看有几个副本
[root@k8s-mastet deployment.yaml]# kubectl apply -f nginx-depl.yml
deployment.apps/dep01 unchanged
service/mysvc unchanged
创建SERVICE
自己理解就是将自己的端口暴露给外界,让外界能访问
[root@kub-k8s-master prome]# vim nginx-depl.yml
apiVersion: apps/v1
kind: Deployment
metadata:name: dep01
spec:selector:matchLabels: #必须设定的app: webreplicas: 2template:metadata:name: testnginx9labels:app: webspec:containers:- name: testnginx9image: daocloud.io/library/nginxports:- containerPort: 80
创建pod
[root@kub-k8s-master prome]# kubectl apply -f nginx-depl.yml
- 创建service并且以nodePort的方式暴露端口给外网:
[root@kub-k8s-master prome]# vim nginx_svc.yaml
apiVersion: v1
kind: Service
metadata:name: mysvc
spec:type: NodePort #类型ports:- port: 8080nodePort: 30001targetPort: 80selector: #选择器app: web
创建pod
[root@kub-k8s-master prome]# kubectl apply -f nginx_svc.yaml
service/mysvc created
3.测试
[root@kub-k8s-master prome]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 5d18h
mysvc NodePort 10.100.166.208 <none> 8080:30001/TCP 21s
案例一nginx端口暴露
我直接写到一起拉 直接创建一个pod就可以
vim nginx-depl.yml
apiVersion: apps/v1
kind: Deployment
metadata:name: dep01
spec:selector:matchLabels:app: nginxreplicas: 2template:metadata:name: testnginx9labels:app: nginxspec:containers:- name: testnginx9image: daocloud.io/library/nginx:1.12.0-alpineports:- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:name: mysvc
spec:type: NodePortports:- port: 8080nodePort: 30001targetPort: 80selector:app: nginx
通信原理概念图
创建pod测试
kubectl apply -f nginx-depl.yml
访问10.8.156.119:3001
访问10.8.156.120:3001
案例二tomcat端口暴露
我先用node节点把镜像拉下来拉,先拉后拉都一样,没有会自己拉取
node节点都操作
docker pull daocloud.io/library/tomcat:8.0.45
master节点操作
vim tomcat-depl.yml
---
apiVersion: apps/v1
kind: Deployment
metadata:name: dep01
spec:selector:matchLabels:app: tomcatreplicas: 2template:metadata:name: testomcatlabels:app: tomcatspec:containers:- name: testtomcatimage: daocloud.io/library/tomcat:8.0.45ports:- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:name: mysvc
spec:type: NodePortports:- port: 8081nodePort: 30003targetPort: 8080selector:app: tomcat
创建一个pod测试
[root@k8s-mastet deployment.yaml]# kubectl apply -f tomcat-depl.yml
deployment.apps/dep01 created
service/mysvc created
[root@k8s-mastet deployment.yaml]# kubectl get pods
NAME READY STATUS RESTARTS AGE
dep01-76b88bb67b-8kgmh 1/1 Running 0 7s
dep01-76b88bb67b-s66z8 1/1 Running 0 7s
[root@k8s-mastet deployment.yaml]#
测试10.8.156.119:3003
测试10.8.156.120:3003
案例三jenkins端口暴漏
步骤一:先去拉去镜像,或者自己dockerfile自己编写一个
node节点上面都拉取一下
master节点去编写 vim jenkins-depl.yml
---
apiVersion: apps/v1
kind: Deployment
metadata:name: dep02
spec:selector:matchLabels:app: jenkinsreplicas: 2template:metadata:name: testjenkinslabels:app: jenkinsspec:containers:- name: testjenkinsimage: daocloud.io/library/jenkins:2.60.2
---
apiVersion: v1
kind: Service
metadata:name: mysvc
spec:type: NodePortports:- port: 8083nodePort: 30011targetPort: 8080selector:app: jenkins
跟上面思路一样,
创建 pod
kubectl apply -f jenkins-depl.yml
访问测试
10.8.156.118:30011
访问测试
10.8.156.120:30011
这篇关于k8s、Deployment多副本资源详解、SERVICE通信、案例一nginx端口暴漏、案例二tomcat端口暴漏、案例三jenkins端口暴漏的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!