kubernetes的yml

kubernetes的yml

1: 创建namespace

文件po.yml 内容如下

apiVersion: v1 
kind: Namespace 
metadata:
 name: po

 命令:

kubectl apply -f po.yml

 删除namespace

kubectl delete -f po.yml

2: 创建pod

文件po-pods.yml 内容如下

apiVersion: v1 
kind: Pod 
metadata:
 name: tomcat9 
 labels:
   app: tomcat9 
spec:
 containers:
   - name: tomcat9 
     image: tomcat:9.0.20-jre8-alpine 
     imagePullPolicy: IfNotPresent 
 restartPolicy: Always

 执行命令

kubectl apply -f po-pods.yml

3: 创建deployment

apiVersion: extensions/v1beta1
kind: Deployment 
metadata:
  name: tomcat-deployment 
  labels:
    app: tomcat-deployment 
spec:
   replicas: 3 
   selector:
    matchLabels:
     app: tomcat
   template:
    metadata:
      name: tomcat-deployment 
      labels:
        app: tomcat 
    spec:
      containers:
        - name: tomcat-deployment 
          image: tomcat:9.0.20-jre8-alpine 
          imagePullPolicy: IfNotPresent 
      restartPolicy: Always

 说明:

在Deployment中必须写matchLables 在定义模板的时候必须定义labels,

因为Deployment.spec.selector是必须字段,而他又必须和 template.labels对应

Deployment控制器:
具有上线部署、滚动升级、创建副本、回滚到以前某一版本(成功/ 稳定)等功能。

Deployment包含ReplicaSet,除非需要自定义升级功能或者根本不需要升级Pod,

否则还是建议使用 Deployment而不直接使用ReplicaSet 。

4: 创建service

apiVersion: extensions/v1beta1
kind: Deployment 
metadata:
  name: tomcat-deploy 
  labels:
    app: tomcat-deploy 
spec:
   replicas: 1
   selector:
    matchLabels:
     app: tomcat-pod
   template:
    metadata:
      name: tomcat-deploy
      labels:
        app: tomcat-pod
    spec:
      containers:
        - name: tomcat-deploy
          image: tomcat:9.0.20-jre8-alpine 
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 8080 
      restartPolicy: Always
---
apiVersion: v1 
kind: Service 
metadata:
  name: tomcat-svc 
spec:
  selector:
    app: tomcat-pod
  ports:
    - port: 8888 
      targetPort: 8080 
      nodePort: 30088 
      protocol: TCP 
  type: NodePort

 service.spec.selector.app选择的内容仍然是template.label.app内容。

而不是我们 deployment控制器的label内容

Service参数

port :访问service使用的端口

targetPort :Pod中容器端口

NodePort: 通过Node实现外网用户访问k8s集群内service(30000-32767)

 

posted @ 2022-11-02 15:11  __破  阅读(76)  评论(0)    收藏  举报