阿里云kubernets使用记录3-新建项目

1、我们来新建第一个项目

#在kubectl中执行
vi yhs-test-deployment.yaml
#内容如下
apiVersion: apps/v1
kind: Deployment
metadata:
  name: yhs-test
  labels:
    app: yhs-test
spec:
  replicas: 2 #2个pod
  selector:
    matchLabels:
      app: yhs-test
  template:
    metadata:
      labels:
        app: yhs-test
    spec:
      containers:
      - name: yhs-test
        image: registry.cn-hangzhou.aliyuncs.com/kylin87/docker-webman:8.1-cli-alpine
        workingDir: /nas/yhs-test  # 设置 Webman 工作目录
        command: ["/bin/sh", "-c"]
        args: ["php start.php start"]  # 启动 Webman
        ports:
        - containerPort: 8787
        - containerPort: 9512
        volumeMounts:
        - name: yhs-nas
          mountPath: /nas  # 挂载整个 NAS
      volumes:
      - name: yhs-nas
        persistentVolumeClaim:
          claimName: my-nas-pvc  # 关联 NAS 的 PVC

#运行文件
kubectl apply -f yhs-test-deployment.yaml
# 查看pod
kubectl get pods -o wide
#进入具体的pod中查看运行情况
kubectl exec -it yhs-test-645ddcc444-rtbnl -- /bin/sh
php start.php status
#如果出现了熟悉的界面,应该就没问题了

2、我们来新建一个svc

vi yhs-test-service.yaml 
#内容如下
apiVersion: v1
kind: Service
metadata:
  name: yhs-test
  namespace: default
spec:
  selector:
    app: yhs-test
  ports:
    - name: api
      port: 80
      targetPort: 8787  # 让 Ingress 访问 8787 端口
    - name: internal
      port: 9512
      targetPort: 9512  # 仅供内部 stream_socket_client 访问
  type: ClusterIP  # 仅在集群内部

#执行文件
kubectl apply -f yhs-test-service.yaml 
#查看svc
kubectl get svc

3、我们来做对外访问

这里我们用到了ingress,默认ack没有安装ingress,我们先去安装。进入的阿里云的ack管理,左侧菜单有市场,选择Helm,然后添加,搜索nginx,一般我们用最新的版本,另外需要注意,上面的命名空间,需要选择kube-system,然后安装就可以了。

#确保ingress安装完毕
kubectl get pod -A
#里面是否能找到nginx-ingress相关的pod

然后我们还需要一个负载均衡来处理外网请求

apiVersion: v1
kind: Service
metadata:
  name: ingress-nginx-controller
  namespace: kube-system  # 修改为 kube-system 命名空间
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "intranet"  # 只分配内网 IP
spec:
  type: LoadBalancer
  ports:
    - name: http
      port: 80
      targetPort: 80
    - name: https
      port: 443
      targetPort: 443
  selector:
    app.kubernetes.io/name: ack-ingress-nginx-v1
    app.kubernetes.io/component: controller

执行后,我们的负载均衡,就会自动增加一条记录,并且有一个外网ip

然后我们来添加一个yhs的ingress

vi yhs-test-ingress.yaml
#内容如下
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: yhs-test-ingress
  namespace: default
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  ingressClassName: ack-nginx
  rules:
    - host: test.yinghuasuan.com  # 这里换成你的域名
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: yhs-test
                port:
                  number: 80


#执行
kubectl apply -f yhs-test-ingress.yaml
#查看ingress
kubectl describe ingress yhs-test-ingress
#查看结果中的address,然后去做域名解析

我们也可以看到负载均衡slb里面也会新增一条记录,ip和上面address中一样,一般来说,解析后,就可以访问成功了。

ingress的配置,可以看这里

https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/?spm=5176.smartservice_service_create_ticket_step_2.0.0.387b43ecMMEDKl

文章作者: Wind
本文链接:
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 雕刻时光
喜欢就支持一下吧