前言

当部署python、java、php等服务时,都是无状态(deployment)应用服务

部署

  • 以部署nginx服务为示例
编辑应用的deployment的yaml文件
cat > ng-dp.yaml <<-EOF
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nginx-dev
  namespace: default
spec:
  selector:
    matchLabels:    # 标签,进行控制器相关联的操作
      app: nginx-dev
  replicas: 2			# 副本数量,即pod的个数
# ------------------------------------  
  template:
    metadata:
      labels:
          app: nginx-dev
    spec:
      imagePullSecrets:     # 拉取镜像策略,把拉取镜像的账密保存在K8s的secrets中
      - name: ali-shenzhen-registry-secret
      containers:
        - name: nginx-dev
          image: nginx
          imagePullPolicy: IfNotPresent
          ports:
           - containerPort: 80     # 开放连接端口
        # -----资源限制-----           - 
          resources:
            requests:     # 查询当前服务器的cpu,内存的资源情况
              cpu: 0.5
              memory: 256Mi
            limits:       # 限制nginx应用的资源使用,当超过时,进行杀死再重启应用
              cpu: 1
              memory: 1Gi
          # -----------------
          # -----健康检查-----    
          readinessProbe:     # 检查应用程序是否就绪,如未,则尝试重建,查看是否恢复
            tcpSocket:
              port: 80
            initialDelaySeconds: 60
            periodSeconds: 10
          livenessProbe:      # 如健康检查失败,不会转发流量,不对外提供服务
            tcpSocket:
              port: 80
            periodSeconds: 10           
          volumeMounts:
           - name: timezone
             mountPath: /etc/timezone
             subPath: timezone
             readOnly: yes
           - name: localtime
             mountPath: /etc/localtime
             readOnly: yes        
      volumes:
        - name: timezone
          configMap:
            name: timezone
        - name: localtime
          hostPath:
             path: /usr/share/zoneinfo/Asia/Shanghai   
EOF
编辑应用的svc的yaml文件

请自行选择合适的类型进行部署服务

  • 1.type类型为ClusterIP
cat > ng-svc.yaml <<-EOF
apiVersion: v1
kind: Service
metadata:
    name: nginx-dev
    namespace: default
spec:
    selector:
        app: nginx-dev
    type: ClusterIP
    ports:
       - protocol: TCP
         targetPort: 80
         port: 80
EOF

获取svc信息

编辑应用的ing的yaml文件
cat > ng-ing.yaml <<-EOF
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
    name: ng
    namespace: default
spec:
    rules:
    - host: ng.xxx.com
      http:
        paths:
        - backend:
             serviceName: nginx-dev
             servicePort: 80
    tls:
      - hosts:
        - "*.xxx.com"
        secretName: tls-xxx-com

EOF

  • 请自行进行域名解析,根据实际情况进行相应的操作
kubectl部署deployment、svc、ingress服务
kubectl apply -f ng-dp.yaml 
kubectl apply -f ng-svc.yaml 
kubectl apply -f ng-ingress.yaml 
kubectl查看deployment、svc、ingress服务
]# kubectl get pod,svc,ing -n cj-dev
NAME                             READY   STATUS             RESTARTS   AGE
pod/nginx-dev-5f544f64cb-r6zm7   1/1     Running            0          85m
pod/nginx-dev-5f544f64cb-r9lr7   1/1     Running            0          85m

NAME                            TYPE           CLUSTER-IP      EXTERNAL-IP                                   PORT(S)              AGE
service/nginx-dev               ClusterIP      172.21.14.170   <none>                                        80/TCP               5h52m

NAME                           HOSTS                       ADDRESS        PORTS     AGE
ingress.extensions/ng          ng.ecaicn.com               47.106.30.90   80, 443   5h51m
结语

… …

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐