利用kind在WIN10 WSL2 中搭建 K8s 环境
利用kind
在WIN10
WSL2
中搭建 K8s
环境
安装kubectl
在Ubuntu
上安装kubectl
,您可以按照以下步骤进行操作:
打开终端,并使用以下命令下载kubectl的最新版本:
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
接下来,将kubectl
二进制文件移动到goPath
目录下,并为其添加可执行权限:
sudo mv ./kubectl /www/wwwroot/go/goPath/bin/kubectl
验证kubectl
是否正确安装。运行以下命令来检查kubectl
的版本:
kubectl version --client
如果kubectl
安装成功,您将看到与kubectl
相关的版本信息。
kind安装
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.20.0/kind-linux-amd64
chmod +x ./kind
sudo mv ./kind /www/wwwroot/go/goPath/bin
如果遇到错误kind: command not found
查看go
是否安装可执行文件ls $GOPATH/bin
如果有kind
,检查你的系统的 PATH 环境变量是否包含了 $GOPATH/bin
目录。你可以在终端中执行以下命令来确认echo $PATH
不存在则执行export PATH=$PATH:$GOPATH/bin
再次执行kind
,如果不生效,执行如下:
source ~/.bashrc
注意:当.bashrc
配置错会导致基础命令无法使用,如执行ls
报Command 'ls' is available in '/bin/ls'
,这时需要执行export PATH=/usr/bin:bin
创建集群
在docker
启动的情况下执行:
kind create cluster --name tsk8s
根据配置文件创建
kind create cluster --name tsk8s --config kind-ingress.yaml
kind-ingress.yaml
文件如下:
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
name: ingress-test
nodes:
- role: control-plane
image: kindest/node:v1.26.3@sha256:61b92f38dff6ccc29969e7aa154d34e38b89443af1a2c14e6cfbd2df6419c66f # 指定 Kubernetes 的版本
kubeadmConfigPatches:
- |
kind: InitConfiguration
nodeRegistration:
kubeletExtraArgs:
node-labels: "ingress-ready=true"
extraPortMappings:
- containerPort: 80 #节点端口
hostPort: 81 # 主机端口
protocol: TCP
- containerPort: 443 # 节点端口
hostPort: 444 # 主机端口
protocol: TCP
列出集群
kind get clusters
kind
tsk8s
切换群集
# 切换到群集`kind`
kubectl cluster-info --context kind-kind
# 切换到群集`tsk8s`
kubectl cluster-info --context kind-tsk8s
查看节点
默认只有一个
kubectl get nodes
删除群集
kind delete cluster --name tsk8s
将图像加载到集群中
本机镜像加载到 Kind 群集
kind load docker-image myimage:tag --name tsk8s
获取集群节点上存在的图像列表
先要知道节点名
kubectl get nodes
NAME STATUS ROLES AGE VERSION
tsk8s-control-plane Ready control-plane 10d v1.26.3
docker exec -it my-node-name crictl images
其中my-node-name是Docker容器的名称(例如,kind-control-plane)
使用 Dashboard
我们除了可以用 kubectl 命令行来控制 K8s 外,我们还可以利用 Dashboard 图形界面来进行一些操作。
安装
下载配置文件
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
部署Dashboard
kubectl apply -f recommended.yaml
查看 Dashboard 的 pod
kubectl get pods -n kubernetes-dashboard
如果 STATUS 不是 Running,调整后执行
kubectl delete -f recommended.yaml
kubectl apply -f recommended.yaml
开启 Dashboard 连接
kubectl proxy
访问:
http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https/proxy/
创建用户
创建文件 user.yaml,内容如下
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: admin-user
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: admin-user
namespace: kubernetes-dashboard
创建用户
kubectl apply -f user.yaml
获取登录的 token
kubectl -n kubernetes-dashboard create token admin-user
复制 token 并将其粘贴到登录屏幕
清理和后续步骤
删除管理员ServiceAccount和ClusterRoleBinding
kubectl -n kubernetes-dashboard delete serviceaccount admin-user
kubectl -n kubernetes-dashboard delete clusterrolebinding admin-user
问题一
当执行kubectl -n kubernetes-dashboard create token admin-user
报error: failed to create token: serviceaccounts "admin-user" not found
,先执行如下命令:
kubectl create sa admin-user -n kubernetes-dashboard
再次执行获取token
kubectl -n kubernetes-dashboard create token admin-user
部署 ingress
ingress 是 Kubernetes 的一种网络服务,它用于将外部流量引入到集群中的服务。它可以用于将 HTTP 和 HTTPS 流量从外部世界引入到集群中的服务,并对流量进行路由和负载均衡。
这里以 ingress-nginx 为例: