K3S 的第一个测试Demo

字号
字体
版心
外观
天空

K3S 的第一个测试Demo

I

Incohua

•1 分钟阅读

背景介绍#

我们已经完成了一个单 Server 的 K3S 集群的搭建,现在开始部署第一个应用。

创建部署文件#

创建一个 nginx-demo.yaml 文件,包含以下资源配置:

yaml
apiVersion: apps/v1
kind: Deployment
metadata:
    name: nginx-deployment
spec:
    replicas: 3  # 创建3个Pod副本
    selector:
        matchLabels:
            app: nginx
    template:
        metadata:
            labels:
                app: nginx
        spec:
            containers:
            - name: nginx
                image: nginxdemos/hello:latest  # 使用nginx演示镜像
                ports:
                - containerPort: 80  # 容器内暴露80端口
---
apiVersion: v1
kind: Service
metadata:
    name: nginx-service
spec:
    selector:
        app: nginx  # 选择所有带有app=nginx标签的Pod
    ports:
    - protocol: TCP
        port: 80  # 服务暴露的端口
        targetPort: 80  # 目标Pod的端口
    type: ClusterIP  # 创建集群内部IP
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
    name: nginx-ingress
    annotations:
        traefik.ingress.kubernetes.io/router.entrypoints: web
        traefik.ingress.kubernetes.io/service.loadbalancer.method: drr  # 使用轮询负载均衡
        traefik.ingress.kubernetes.io/service.sticky: "false"  # 禁用会话粘性
spec:
    rules:
    - host: example.com  # 设置访问域名
        http:
            paths:
            - path: /  # 根路径
                pathType: Prefix
                backend:
                    service:
                        name: nginx-service
                        port:
                            number: 80  

部署应用#

执行以下命令部署应用:

bash
kubectl apply -f nginx-demo.yaml

成功部署后,将看到类似以下输出:

bash
deployment.apps/nginx-deployment created
service/nginx-service created
ingress.networking.k8s.io/nginx-ingress created

验证部署状态#

检查 Pod 状态#

bash
kubectl get pods -o wide

输出示例:

bash
NAME                                READY   STATUS    RESTARTS   AGE     IP           NODE            NOMINATED NODE   READINESS GATES
nginx-deployment-5ccd6fdc5b-dmwml   1/1     Running   0          2m51s   10.42.2.8    agent-jp-claw   <none>           <none>
nginx-deployment-5ccd6fdc5b-np6mj   1/1     Running   0          2m51s   10.42.1.8    agent-hk-claw   <none>           <none>
nginx-deployment-5ccd6fdc5b-nscrm   1/1     Running   0          2m51s   10.42.0.15   master-hk-fox   <none>           <none>

可以看到已创建了三个容器实例,分布在三个节点上。

检查 Service 状态#

bash
kubectl get svc

输出示例:

bash
NAME            TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE
kubernetes      ClusterIP   10.43.0.1      <none>        443/TCP   12h
nginx-service   ClusterIP   10.43.225.46   <none>        80/TCP    4m29s

检查 Ingress 状态#

bash
kubectl get ingress

输出示例:

bash
NAME            CLASS     HOSTS       ADDRESS                                  PORTS   AGE
nginx-ingress   traefik   example.com 100.113.225.35,100.120.219.98,100.68.209.88 80      4m35s

访问应用#

将域名解析到任一已部署 Pod 的节点 IP 上,即可访问应用。

轮询展示

评论 0

按时间排序
评论还没开通
  1. 还没有评论。