跳到主要内容

使用 Kind 部署/开发

Kind 是一种方便的工具,用于在本地快速部署 kubernetes 集群。我们可以使用 kind 创建 istio 集群并部署 kmesh

在 Kind 中部署 Kmesh

让我们从设置所需环境开始。您可以按照以下步骤操作:

安装 kind

安装 kind 非常简单,因为它只是一个二进制文件。您可以根据 github 发布页面 上的版本和架构选择正确的文件。以 linux + amd64 为例:

wget -O kind https://github.com/kubernetes-sigs/kind/releases/download/v0.23.0/kind-linux-amd64
chmod +x kind
mv kind /usr/bin/

使用 kind 创建 Kubernetes 集群

您可以参考 istio 官方文档

如果您想指定多个工作节点或节点镜像,可以:

kind create cluster --image=kindest/node:v1.30.0 --config=- <<EOF
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
name: ambient
nodes:
- role: control-plane
- role: worker
- role: worker
EOF

安装 istioctl

curl -L https://istio.io/downloadIstio | sh -
cd istio-1.22.2/bin
chmod +x istioctl
mv istioctl /usr/bin/

使用 istioctl 安装 istio 组件

istioctl install

如果您想在 workload 模式下使用 Kmesh,您应该以 环境模式 部署 istio,通过添加一个额外的标志:

istioctl install --set profile=ambient

安装 kubectl

请按照官方指南操作:在 Linux 上安装和设置 kubectl

部署 Kmesh

现在,您已准备好在本地集群中部署 Kmesh。请随时按照 Kmesh 快速入门 进行操作。

在 Kind 中开发 Kmesh

您可以按照以下步骤在 kind 中进行开发:

在本地构建代码和 docker 镜像

make docker

这将启动一个名为 kmesh-build 的 docker 容器来构建您的代码。然后,它将构建相应的 docker 镜像。

您也可以分别执行此操作:

在本地构建代码

make build

在本地构建 docker 镜像

docker build --build-arg arch=amd64 -f build/docker/dockerfile -t $image_name .

您应该指定 image_name

将镜像加载到每个集群节点

kind load docker-image $image_name --name $cluster_name

您应该指定 image_namecluster_name

编辑 Kmesh daemonset

Kmesh 守护进程作为 kubernetes Daemonset 运行。您应该修改 daemonset 的配置,触发重新部署。

kubectl edit ds kmesh -n kmesh-system

这将打开一个编辑器,您可以在此处修改镜像。

您可以通过以下方式检查 Kmesh 守护进程是否都在运行:

kubectl get po -n kmesh-system -w

检查日志

您可以通过以下方式检查 Kmesh 守护进程的日志:

kubectl logs $kmesh_pod_name -n kmesh-system

kmesh_pod_name 是指定 Kmesh pod 的名称。

您可以通过以下方式更改日志级别:

kubectl exec -it $kmesh_pod_name -n kmesh-system -- kmesh-daemon log --set default:debug

特别是,对于 bpf 日志:

kubectl exec -it $kmesh_pod_name -n kmesh-system -- kmesh-daemon log --set bpf:debug

您可以使用 uname -r 检查内核版本。如果高于 5.13.0,bpf 日志将被推送到用户空间。我们可以在日志文件中查看它们(带有 subsys=ebpf)。否则,您应该使用 bpftool 检查它们:

bpftool prog tracelog

清理

构建过程将修改一些与配置相关的文件,如果您想将代码推送到 github,请使用:

make clean

在执行 git add 命令之前清理这些更改。

参考