searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

k3s on k8s容器化部署方案实践

2024-11-27 09:37:37
82
0

1、环境准备

1.1、两台虚拟机:

k3s-master(192.168.10.102) 部署底层k8s集群,且k3s-master on k8s部署

k3s-node(192.168.10.103) 部署k3s-agent,以服务方式启动注册到k3s-master

1.2、k3s-master底层集群

 

部署local-path-storage,作为k3s文件存储;

部署mysql,作为k3s集群后端数据库;

 

2、k3s-master部署

本例使用k3s:v1.26.12版本部署验证

社区镜像:rancher/k3s:v1.26.12-k3s1

2.1、k3s使用StatefulSet类型启动2个副本,达到高可用目的,具体模板参考如下:

---

apiVersion: apps/v1

kind: StatefulSet

metadata:

  name: k3s-server

  namespace: k3s-cluster

spec:

  replicas: 2

  selector:

    matchLabels:

      app: k3s

  template:

    metadata:

      labels:

        app: k3s

    spec:

      containers:

      - name: k3s

        image: dockerhub.kubekey.local/rancher/k3s:v1.26.12-k3s1 # 选择合适的版本

        command:

        - k3s

        args:

        - server

        - --token=自定义

        - --node-external-ip=192.168.10.102

        - --advertise-port=31443

        - --tls-san=192.168.10.102

        - --datastore-endpoint=mysql://root:mysqlpassword@tcp(192.168.10.102:3306)/k3s

        #- --write-kubeconfig=/data/k3s-config/kube-config.yaml

        #- --data-dir=/data

        - --disable=traefik,servicelb,metrics-server

        - --disable-network-policy

        - --disable-agent

        - --disable-cloud-controller

        - --egress-selector-mode=disabled

        #- --flannel-backend=none

        - --kube-apiserver-arg=bind-address=127.0.0.1

        ports:

        - containerPort: 6443

          name: https

        - containerPort: 8080

          name: http

        livenessProbe:

          failureThreshold: 8

          httpGet:

            host: 127.0.0.1

            path: /livez

            port: 6443

            scheme: HTTPS

          initialDelaySeconds: 10

          periodSeconds: 10

          timeoutSeconds: 15

        readinessProbe:

          failureThreshold: 3

          httpGet:

            host: 127.0.0.1

            path: /readyz

            port: 6443

            scheme: HTTPS

          periodSeconds: 1

          timeoutSeconds: 15

        volumeMounts:

        - mountPath: /var/lib/rancher/k3s

          name: k3s-storage

      #volumes:

      #- name: k3s-storage

      #  emptyDir: {}

  volumeClaimTemplates:

  - apiVersion: v1

    kind: PersistentVolumeClaim

    metadata:

      name: k3s-storage

    spec:

      accessModes:

      - ReadWriteOnce

      resources:

        requests:

          storage: 10Gi

      volumeMode: Filesystem

      storageClassName: local-path

---

apiVersion: v1

kind: Service

metadata:

  name: k3s-service

  namespace: k3s-cluster

spec:

  selector:

    app: k3s

  ports:

  - protocol: TCP

    port: 6443

    targetPort: 6443

    nodePort: 31443

  type: NodePort

 

2.2、启动k3s-master

 

查看mysql中会自动创建出名为k3s的database,是模板中自定义的。

 

进去k3s容器内查看,此时没有node节点,启动了local-path和coredns两个Pod处于pending状态。

 

 

3、k3s-agent部署

需要从github获取master使用的相同版本k3s二进制文件及组件镜像tar包;

获取k3s安装脚本:

 

3.1、启动k3s-agent

node节点上创建目录/var/lib/rancher/k3s/agent/images将上述镜像tar包放入该目录,后续启动agent会自动加载这些镜像;

k3s二进制文件放入node节点的/usr/local/bin/目录下;

执行安装命令:

INSTALL_K3S_SKIP_DOWNLOAD=true INSTALL_K3S_VERSION=v1.26.12+k3s1 INSTALL_K3S_MIRROR=cn K3S_URL=192.168.10.102:31443 K3S_TOKEN=自定义 ./k3s-install.sh

日志如下:

 

查看k3s-agent服务状态:

 

3.2、进入master容器查看

node注册成功,组件运行正常

 

 

4、应用部署验证

4.1、获取k3s集群kubeconfig

kubeconfig文件保存在master容器中/etc/rancher/k3s/k3s.yaml

复制到主机节点,修改server: //192.168.10.102:31443

在主机上即可通过该config访问k3s集群,如下:

 

4.2、部署nginx验证

 

 

0条评论
0 / 1000
Liqingsen
6文章数
0粉丝数
Liqingsen
6 文章 | 0 粉丝
原创

k3s on k8s容器化部署方案实践

2024-11-27 09:37:37
82
0

1、环境准备

1.1、两台虚拟机:

k3s-master(192.168.10.102) 部署底层k8s集群,且k3s-master on k8s部署

k3s-node(192.168.10.103) 部署k3s-agent,以服务方式启动注册到k3s-master

1.2、k3s-master底层集群

 

部署local-path-storage,作为k3s文件存储;

部署mysql,作为k3s集群后端数据库;

 

2、k3s-master部署

本例使用k3s:v1.26.12版本部署验证

社区镜像:rancher/k3s:v1.26.12-k3s1

2.1、k3s使用StatefulSet类型启动2个副本,达到高可用目的,具体模板参考如下:

---

apiVersion: apps/v1

kind: StatefulSet

metadata:

  name: k3s-server

  namespace: k3s-cluster

spec:

  replicas: 2

  selector:

    matchLabels:

      app: k3s

  template:

    metadata:

      labels:

        app: k3s

    spec:

      containers:

      - name: k3s

        image: dockerhub.kubekey.local/rancher/k3s:v1.26.12-k3s1 # 选择合适的版本

        command:

        - k3s

        args:

        - server

        - --token=自定义

        - --node-external-ip=192.168.10.102

        - --advertise-port=31443

        - --tls-san=192.168.10.102

        - --datastore-endpoint=mysql://root:mysqlpassword@tcp(192.168.10.102:3306)/k3s

        #- --write-kubeconfig=/data/k3s-config/kube-config.yaml

        #- --data-dir=/data

        - --disable=traefik,servicelb,metrics-server

        - --disable-network-policy

        - --disable-agent

        - --disable-cloud-controller

        - --egress-selector-mode=disabled

        #- --flannel-backend=none

        - --kube-apiserver-arg=bind-address=127.0.0.1

        ports:

        - containerPort: 6443

          name: https

        - containerPort: 8080

          name: http

        livenessProbe:

          failureThreshold: 8

          httpGet:

            host: 127.0.0.1

            path: /livez

            port: 6443

            scheme: HTTPS

          initialDelaySeconds: 10

          periodSeconds: 10

          timeoutSeconds: 15

        readinessProbe:

          failureThreshold: 3

          httpGet:

            host: 127.0.0.1

            path: /readyz

            port: 6443

            scheme: HTTPS

          periodSeconds: 1

          timeoutSeconds: 15

        volumeMounts:

        - mountPath: /var/lib/rancher/k3s

          name: k3s-storage

      #volumes:

      #- name: k3s-storage

      #  emptyDir: {}

  volumeClaimTemplates:

  - apiVersion: v1

    kind: PersistentVolumeClaim

    metadata:

      name: k3s-storage

    spec:

      accessModes:

      - ReadWriteOnce

      resources:

        requests:

          storage: 10Gi

      volumeMode: Filesystem

      storageClassName: local-path

---

apiVersion: v1

kind: Service

metadata:

  name: k3s-service

  namespace: k3s-cluster

spec:

  selector:

    app: k3s

  ports:

  - protocol: TCP

    port: 6443

    targetPort: 6443

    nodePort: 31443

  type: NodePort

 

2.2、启动k3s-master

 

查看mysql中会自动创建出名为k3s的database,是模板中自定义的。

 

进去k3s容器内查看,此时没有node节点,启动了local-path和coredns两个Pod处于pending状态。

 

 

3、k3s-agent部署

需要从github获取master使用的相同版本k3s二进制文件及组件镜像tar包;

获取k3s安装脚本:

 

3.1、启动k3s-agent

node节点上创建目录/var/lib/rancher/k3s/agent/images将上述镜像tar包放入该目录,后续启动agent会自动加载这些镜像;

k3s二进制文件放入node节点的/usr/local/bin/目录下;

执行安装命令:

INSTALL_K3S_SKIP_DOWNLOAD=true INSTALL_K3S_VERSION=v1.26.12+k3s1 INSTALL_K3S_MIRROR=cn K3S_URL=192.168.10.102:31443 K3S_TOKEN=自定义 ./k3s-install.sh

日志如下:

 

查看k3s-agent服务状态:

 

3.2、进入master容器查看

node注册成功,组件运行正常

 

 

4、应用部署验证

4.1、获取k3s集群kubeconfig

kubeconfig文件保存在master容器中/etc/rancher/k3s/k3s.yaml

复制到主机节点,修改server: //192.168.10.102:31443

在主机上即可通过该config访问k3s集群,如下:

 

4.2、部署nginx验证

 

 

文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
0
0