kubeclipper快速实践部署AIO节点环境

kubeclipper快速实践部署AIO节点环境

对于初次接触 KubeClipper 并想快速上手的用户,建议使用 AIO(即 All-in-One,使用单个节点安装 KubeClipper,包括Kubernetes)模式,它能够帮助您零配置快速部署 KubeClipper。

1. 准备工作

参考如下要求准备一台机器。

1.1 硬件推荐配置

  • 确保您的机器满足最低硬件要求:CPU >= 2 核,内存 >= 2GB。
  • 操作系统:CentOS 7.x / Ubuntu 18.04 / Ubuntu 20.04。

1.2 节点要求

  • 节点必须能够通过 SSH 连接。
  • 节点上可以使用 sudo / curl / wget / tar 命令。

2. 部署 KubeClipper

2.1 下载并安装kcctl

KubeClipper 提供了命令行工具🔧 kcctl 以简化运维工作,您可以直接使用以下命令下载最新版 kcctl:

# 默认安装最新的发行版
curl -sfL https://oss.kubeclipper.io/get-kubeclipper.sh | bash -
# 安装指定版本
curl -sfL https://oss.kubeclipper.io/get-kubeclipper.sh | KC_VERSION=v1.3.1 bash -
# 如果您在中国, 您可以在安装时使用 cn  环境变量, 此时 KubeClipper 会使用 registry.aliyuncs.com/google_containers 代替 k8s.gcr.io
curl -sfL https://oss.kubeclipper.io/get-kubeclipper.sh | KC_REGION=cn bash -

# 通过以下命令验证 kcctl 是否安装成功:
kcctl version

也可以在 GitHub Release Page 下载指定版本。

2.2 安装KubeClipper环境

可以使用 kcctl deploy快速安装部署 KubeClipper。kcctl 使用 SSH 访问最终部署 KubeClipper 的目标节点,因此需要您提供 SSH 访问凭证,传递凭证的方法如下:

Kcctl deploy [--user <username>] [--passwd <password> | --pk-file <private key path>]

# 使用私钥
kcctl deploy --user root --pk-file /root/.ssh/id_rsa
# 使用密码
kcctl deploy --user root --passwd password

执行 kcctl deploy命令 kcctl 将会检查您的安装环境,若满足条件将自动进入安装流程。若您看到如下 KubeClipper banner 后即表示安装成功。

说明

kcctl默认会检查机器是否配置ntp,如果没有配置会给出提示,可以补充配置或者选择忽略。正式环境建议配置ntp进行时间校准。

部署示例,下面给出了KubeClipper部署的不同场景下使用的示例。

# Deploy All-In-One use local host, etcd port will be set automatically. (client-12379 | peer-12380 | metrics-12381)
# 本文部署的AIO环境使用下面命令部署。
kcctl deploy

# Deploy AIO env and change etcd port
kcctl deploy --server 192.168.234.3 --agent 192.168.234.3 --passwd 'YOUR-SSH-PASSWORD' --etcd-port 12379 --etcd-peer-port 12380 --etcd-metric-port 12381

# Deploy HA env
kcctl deploy --server 192.168.234.3,192.168.234.4,192.168.234.5 --agent 192.168.234.3 --passwd 'YOUR-SSH-PASSWORD' --etcd-port 12379 --etcd-peer-port 12380 --etcd-metric-port 12381

# Deploy env use SSH key instead of password
kcctl deploy --server 192.168.234.3 --agent 192.168.234.3 --pk-file ~/.ssh/id_rsa --pkg kc-minimal.tar.gz

# Deploy env use remove http/https resource server
kcctl deploy --server 192.168.234.3 --agent 192.168.234.3 --pk-file ~/.ssh/id_rsa --pkg https://oss.kubeclipper.io/release/v1.4.0/kc-amd64.tar.gz

# Deploy env with many agent node in same region.
kcctl deploy --server 192.168.234.3 --agent us-west-1:192.168.10.123,192.168.10.124  --pk-file ~/.ssh/id_rsa --pkg https://oss.kubeclipper.io/release/v1.4.0/kc-amd64.tar.gz

# Deploy env with many agent node in different region.
kcctl deploy --server 192.168.234.3 --agent us-west-1:1.1.1.1,1.1.1.2 --agent us-west-2:1.1.1.3 --pk-file ~/.ssh/id_rsa --pkg https://oss.kubeclipper.io/release/v1.4.0/kc-amd64.tar.gz

# Deploy env with many agent node which has orderly ip.
# this will add 10 agent,1.1.1.1, 1.1.1.2, ... 1.1.1.10.
kcctl deploy --server 192.168.234.3 --agent us-west-1:1.1.1.1-1.1.1.10 --pk-file ~/.ssh/id_rsa --pkg https://oss.kubeclipper.io/release/v1.4.0/kc-amd64.tar.gz

# Deploy env with many agent nodes and specify ip detect method for these nodes
kcctl deploy --server 192.168.234.3 --agent 192.168.234.3,192.168.234.4 --ip-detect=interface=eth0 --pk-file ~/.ssh/id_rsa --pkg https://oss.kubeclipper.io/release/v1.4.0/kc-amd64.tar.gz

# Deploy env with many agent nodes and specify node ip detect method for these nodes, used for routing between nodes in the kubernetes cluster
kcctl deploy --server 192.168.234.3 --agent 192.168.234.3,192.168.234.4 --node-ip-detect=interface=eth1 --pk-file ~/.ssh/id_rsa --pkg https://oss.kubeclipper.io/release/v1.4.0/kc-amd64.tar.gz

# Deploy from config.
kcctl deploy --deploy-config deploy-config.yaml
# Deploy and config fip to agent node.
kcctl deploy --server 172.20.149.198 --agent us-west-1:10.0.0.10 --agent us-west-2:20.0.0.11 --fip 10.0.0.10:172.20.149.199 --fip 20.0.0.11:172.20.149.200

本文部署的版本:

# kubeclipper版本为v1.4.1
]# kcctl version
kcctl version: version.Info{Major:"1", Minor:"4+", GitVersion:"v1.4.1-4+ea4b1e2a3b379a", GitCommit:"ea4b1e2a3b379a6fc0c71840ff98c117ca69cb72", GitTreeState:"clean", BuildDate:"2024-07-25T08:55:55Z", GoVersion:"go1.20.7", Compiler:"gc", Platform:"linux/amd64"}
kubeclipper-server version: version.Info{Major:"1", Minor:"4+", GitVersion:"v1.4.1-4+ea4b1e2a3b379a", GitCommit:"ea4b1e2a3b379a6fc0c71840ff98c117ca69cb72", GitTreeState:"clean", BuildDate:"2024-07-25T08:49:29Z", GoVersion:"go1.20.7", Compiler:"gc", Platform:"linux/amd64"}

# 部署完成后会在/tmp目录下载安装包,通过解压后可以看到离线安装包。
]# pwd
/tmp
[root@minioserver-3 tmp]# ls
kc  kc-amd64.tar.gz  kc-downloader
# 从目录结构可以看出kcctl默认部署的组件版本。
[root@minioserver-3 tmp]# tree kc
kc
├── bin
│   ├── caddy
│   ├── etcd
│   ├── etcdctl
│   ├── etcdutl
│   ├── kcctl
│   ├── kubeclipper-agent
│   ├── kubeclipper-proxy
│   ├── kubeclipper-server
│   └── registry
├── kc-console
│   ├── antd.bundle.1721898471.js
│   ├── antd.bundle.1721898471.js.gz
│   ├── antd.e
...
└── resource
    ├── calico
    │   └── v3.26.1
    │       └── amd64
    │           ├── charts.tgz
    │           ├── images.tar.gz
    │           └── manifest.json
    ├── containerd
    │   └── 1.6.4
    │       └── amd64
    │           ├── configs.tar.gz
    │           └── manifest.json
    ├── k8s
    │   └── v1.27.4
    │       └── amd64
    │           ├── configs.tar.gz
    │           ├── images.tar.gz
    │           └── manifest.json
    ├── k8s-extension
    │   └── v1
    │       └── amd64
    │           ├── configs.tar.gz
    │           ├── images.tar.gz
    │           └── manifest.json
    ├── kc-extension
    │   └── latest
    │       └── amd64
    │           ├── images.tar.gz
    │           └── manifest.json
    └── metadata.json
  1. 登录控制台

安装完成后,打开浏览器,访问 http://<kc-server ip address> 即可进入 KubeClipper 控制台。(通常 kc-server ip 是您部署 kubeClipper 节点的 ip)

可以使用默认帐号密码 admin / Thinkbig1进行登录。

说明

KubeClipper使用caddy作为web服务器,使用80端口,确保部署机器端口未占用。

3. 创建 Kubernetes 集群

部署成功后您可以使用 kcctl 工具或者通过控制台创建 Kubernetes 集群。在本快速入门教程中使用 kcctl 工具进行创建。

首先使用默认帐号密码进行登录获取 token,便于后续 kcctl 和 kc-server 进行交互。

kcctl login -H https://<kc-server ip address>:8080 -u admin -p Thinkbig1

通过以下命令创建 Kubernetes 集群:

NODE=$(kcctl get node -o yaml|grep ipv4DefaultIP:|sed 's/ipv4DefaultIP: //')

kcctl create cluster --master $NODE --name demo --untaint-master

大概 3 分钟左右即可完成集群创建,您可以使用以下命令查看集群状态

kcctl get cluster -o yaml|grep status -A5

# 部署成功后查看状态
]# kcctl get cluster -o yaml|grep status -A5
status:
  certifications:
  - caName: ""
    expirationTime: "2034-09-23T05:55:00Z"
    name: ca
  - caName: ""
--
    status: Healthy
  controlPlaneHealth:
  - address: 192.168.1.11:6443
    hostname: minioserver-3
    id: 9975bb40-3d06-4b61-a04e-ae8771d20a85
    status: Healthy
  phase: Running
  versions:
    apiserver: ""
    controlPlane: ""
    controllerManager: ""

]# kubectl get node
NAME            STATUS   ROLES           AGE   VERSION
minioserver-3   Ready    control-plane   13m   v1.27.4
]# kubectl get pod -A
NAMESPACE          NAME                                       READY   STATUS    RESTARTS      AGE
calico-apiserver   calico-apiserver-8584896b4-dgwrh           1/1     Running   0             11m
calico-apiserver   calico-apiserver-8584896b4-wzsg2           1/1     Running   0             11m
calico-system      calico-kube-controllers-7f69d4d66c-9pj7g   1/1     Running   0             11m
calico-system      calico-node-nb9sb                          1/1     Running   0             11m
calico-system      calico-typha-64ddc66cdd-xt7vh              1/1     Running   0             11m
calico-system      csi-node-driver-mxsv4                      2/2     Running   0             11m
calico-system      tigera-operator-5f4668786-9c8bz            1/1     Running   0             12m
kube-system        coredns-5d78c9869d-d577l                   1/1     Running   0             12m
kube-system        coredns-5d78c9869d-qkd8r                   1/1     Running   0             12m
kube-system        etcd-minioserver-3                         1/1     Running   0             13m
kube-system        kube-apiserver-minioserver-3               1/1     Running   0             13m
kube-system        kube-controller-manager-minioserver-3      1/1     Running   0             13m
kube-system        kube-proxy-pgk22                           1/1     Running   0             12m
kube-system        kube-scheduler-minioserver-3               1/1     Running   1 (10m ago)   13m

集群处于 Running 状态即表示集群安装完成,您可以使用 kubectl get cs 命令来查看集群健康状况。


]# kubectl get cs
Warning: v1 ComponentStatus is deprecated in v1.19+
NAME                 STATUS    MESSAGE   ERROR
etcd-0               Healthy             
scheduler            Healthy   ok        
controller-manager   Healthy   ok   

至此就部署完成一台ALl-IN-ONE的集群,在本文使用的环境中,KubeClipper使用的版本为1.4.1,最终部署的k8s版本为1.27.4,containerd版本为1.6.4,calico版本为3.26.1。etcd版本为3.5.7,非容器化部署,采用本地驻守进程运行(服务名称:kc-etcd.service)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lldhsds

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值