赞
踩
Kubernetes支持YAML和JSON格式管理资源对象
kubectl api-versions
- mkdir /opt/demo
- cd demo/
-
- vim nginx-deployment.yaml
- apiVersion: apps/v1 #指定api版本标签
- kind: Deployment #定义资源的类型/角色,deployment为副本控制器,此处资源类型可以是Deployment、Job、Ingress、Service等
- metadata: #定义资源的元数据信息,比如资源的名称、namespace、标签等信息
- name: nginx-deployment #定义资源的名称,在同一个namespace空间中必须是唯一的
- labels: #定义Deployment资源标签
- app: nginx
- spec: #定义deployment资源需要的参数属性,诸如是否在容器失败时重新启动容器的属性
- replicas: 3 #定义副本数量
- selector: #定义标签选择器
- matchLabels: #定义匹配标签
- app: nginx #需与 .spec.template.metadata.labels 定义的标签保持一致
- template: #定义业务模板,如果有多个副本,所有副本的属性会按照模板的相关配置进行匹配
- metadata:
- labels: #定义Pod副本将使用的标签,需与 .spec.selector.matchLabels 定义的标签保持一致
- app: nginx
- spec:
- containers: #定义容器属性
- - name: nginx #定义一个容器名,一个 - name: 定义一个容器
- image: nginx:1.15.4 #定义容器使用的镜像以及版本
- ports:
- - containerPort: 80 #定义容器的对外的端口
- kubectl create -f nginx-deployment.yaml
-
- kubectl get pods -o wide
- vim nginx-service.yaml
- apiVersion: v1
- kind: Service
- metadata:
- name: nginx-service
- labels:
- app: nginx
- spec:
- type: NodePort
- ports:
- - port: 80
- targetPort: 80
- selector:
- app: nginx
- kubectl create -f nginx-service.yaml
-
- kubectl get svc
例如:http://192.168.10.6:30061
在Kubernetes中,端口的概念非常重要。Pod中的应用程序可能需要暴露一些端口来让其他Pod或外部应用程序访问。在Kubernetes中,端口主要分为两种类型分别是节点端口和集群内部端口。
节点端口(NodePort)允许外部流量通过节点直接访问Pod。使用这种方式后,外部流量将会通过节点的IP地址和指定的端口转发到相应的Pod。NodePort随机指定一个端口号,端口范围在30000-32767之间。可以通过指定NodePort的值来指定一个特定的节点端口。
nodePort:nodePort是外部访问k8s集群中service的端口,通过nodeIP: nodePort可以从外部访问到某个service。
targetPort:targetPort是Pod的端口,从port或nodePort来的流量经过kube-proxy反向代理负载均衡转发到后端Pod的targetPort上,最后进入容器。
containerPort:containerPort是Pod内部容器的端口,targetPort映射到containerPort。
集群内部端口暴露应用程序服务给其他Pod使用。通过定义端口并把它们暴露给其他Pod,可以方便地实现服务发现和内部路由功能。在Kubernetes中,有三种类型的内部端口:容器端口(Container Port)、名称化端口(Named Port)和端点端口(Endpoint Port)。
这些端口类型可用于不同的场景,可以根据需求来选择具体的端口类型。
在Kubernetes中定义端口时,通常需要指定两个属性:端口号和协议类型。端口号是一个整数,协议类型可以是TCP或UDP。例如,定义TCP协议的8080端口可以写成:8080/TCP。通过这两个属性定义,Kubernetes能够正确接受和转发请求,从而使应用程序正常工作。
- kubectl run nginx-test --image=nginx --port=80 --dry-run=client
- kubectl create deployment nginx-deploy --image=nginx --port=80 --replicas=3 --dry-run=client
- kubectl run nginx-test --image=nginx --port=80 --dry-run=client -o yaml
- kubectl create deployment nginx-deploy --image=nginx --port=80 --replicas=3 --dry-run=client -o yaml
- kubectl run nginx-test --image=nginx --port=80 --dry-run=client -o json
- kubectl create deployment nginx-deploy --image=nginx --port=80 --replicas=3 --dry-run=client -o json
- kubectl run nginx-test --image=nginx --port=80 --dry-run=client -o yaml > nginx-test.yaml
- kubectl create deployment nginx-deploy --image=nginx --port=80 --replicas=3 --dry-run=client -o yaml > nginx-deploy.yaml
-
- vim nginx-test.yaml
- apiVersion: v1
- kind: Pod
- metadata:
- creationTimestamp: null #删除
- labels:
- run: nginx-test
- name: nginx-test
- spec:
- containers:
- - image: nginx
- name: nginx-test
- ports:
- - containerPort: 80
- resources: {} #删除
- dnsPolicy: ClusterFirst
- restartPolicy: Always
- status: {} #删除
kubectl get svc nginx-service -o yaml
kubectl get svc nginx-service -o yaml > my-svc.yaml
- kubectl explain deployments.spec.template.spec.containers
- 或
- kubectl explain pods.spec.containers
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。