WSL2或centos使用kind安装K8S
检查您的机器上是否存在其他 Kubernetes 工具或者其他容器环境(如 minikube、Docker Desktop 等),这些工具可能会影响 kind create cluster 命令的执行。您可以使用 wsl --status 命令检查是否有可用的更新,使用 wsl --update 命令来安装更新。如果上述方法都无法解决问题,您可以尝试使用其他 Kubernetes 工具(如 min
!!!一定要先安装好docker和升级WSL2以及支持systemctl
WSL2升级和docker安装以及支持systemctl命令
wsl2升级和支持systemctl命令请看我这篇文章
https://blog.csdn.net/qq_39272466/article/details/131169021
WSL2安装K8S
关闭swap
临时关闭
swapoff -a
永久关闭
1.切换到:C:\Users\【你的用户名】
2.新建一个.wslconfig的配置文件
3.添加下面这写配置[wsl2] swap=0 # 关闭swap [network] generateResolvConf = false # 解决域名解析失败的问题
关闭所有的虚拟机
wsl --shutdown
查看是否关闭了
free
-
安装kebuctl
1.更新apt软件包索引并安装使用Kubernetes apt存储库所需的软件包(linux系统已经换源):
sudo apt-get update sudo apt-get install -y apt-transport-https ca-certificates curl
2.使用阿里云的镜像
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
3.添加Kubernetes apt存储库:
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main EOF
4.使用新存储库更新apt软件包索引并安装kubectl:
sudo apt-get update sudo apt-get install -y kubectl
5.可以使用
kubectl version
验证是否安装成功centos安装kubectl
cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=0 repo_gpgcheck=0 gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF
setenforce 0 yum install -y kubectl --disableexcludes=kubernetes
安装kind(推荐使用go安装)
之前有安装的话,把之前的重命名吧版本老旧的话会有问题
mv /usr/local/bin/kind /usr/local/bin/oldkind
golang安装
go install sigs.k8s.io/kind@latest
直接下载二进制文件安装
[ $(uname -m) = aarch64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.20.0/kind-$(uname)-arm64 chmod +x ./kind sudo mv ./kind /usr/local/bin/kind
golang安装如果遇到超时问题,可能是golang的代理问题
1.首先开启go module
go env -w GO111MODULE=on // Windows export GO111MODULE=on // macOS 或 Linux
2.配置goproxy:
阿里配置:
go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/ // Windows export GOPROXY=https://mirrors.aliyun.com/goproxy/ // macOS 或 Linux
七牛云配置:
go env -w GOPROXY=https://goproxy.cn // Windows export GOPROXY=https://goproxy.cn // macOS 或 Linux
安装kind之后如果遇到Command ‘kind’ not found, did you mean:问题
检查GOPATH,GOROOT两个环境变量
echo $GOROOT echo $GOPATH
没有这两个环境变量的话自行去配置
echo 'export PATH=$PATH:$GOROOT/bin:$GOPATH/bin' >> ~/.bashrc
安装单节点k8s
k8s.yaml文件
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
kubeadmConfigPatches:
- |
kind: InitConfiguration
nodeRegistration:
kubeletExtraArgs:
node-labels: "ingress-ready=true"
extraPortMappings:
- containerPort: 80
hostPort: 80
protocol: TCP
- containerPort: 443
hostPort: 443
protocol: TCP
- containerPort: 30001
hostPort: 30001
- containerPort: 30080
hostPort: 30080
protocol: TCP
- containerPort: 30443
hostPort: 30443
protocol: TCP
extraPortMappings:把 K8s 容器(相当于 K8s 所在的服务器)端口暴露出来
node-labels:只允许 Ingress controller 运行在有"ingress-ready=true"标签的 node 上
安装多节点的k8s
kind-3nodes.yaml
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
containerdConfigPatches:
- |-
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
endpoint = ["https://aa25jngun.mirror.aliyuncs.com"]
nodes:
- role: control-plane
kubeadmConfigPatches:
- |
kind: InitConfiguration
nodeRegistration:
kubeletExtraArgs:
node-labels: "ingress-ready=true"
extraPortMappings:
- containerPort: 30000
hostPort: 8000
protocol: TCP
- containerPort: 30001
hostPort: 8080
protocol: TCP
- containerPort: 30002
hostPort: 4443
protocol: TCP
- role: worker
- role: worker
kind create cluster --name 3 --config ./kind-3nodes.yaml
出现timed out问题解决
ERRO[15:10:23] timed out waiting for docker to be ready on node kind-control-plane
Error: failed to create cluster: timed out waiting for docker to be ready on node kind-control-plane
如果使用了 --wait 120 之后仍然遇到了 “failed to create cluster: timed out
waiting for docker to be ready on node kind-control-plane”
错误,那么可以尝试以下方法:
确保在 WSL2 中已经安装了 Docker。您可以使用 docker --version 命令来验证 Docker 是否已经正确安装并运行。
确认在 WSL2 中安装了必要的 Linux 内核更新。您可以使用 wsl --status 命令检查是否有可用的更新,使用 wsl --update 命令来安装更新。
检查您的机器上是否存在其他 Kubernetes 工具或者其他容器环境(如 minikube、Docker Desktop 等),这些工具可能会影响 kind create cluster 命令的执行。如果存在这样的工具,可以尝试将其停止或卸载后再次运行 kind
create cluster 命令。
如果您的网络连接缓慢或不稳定,可以尝试连接到其他网络或使用 VPN 来改善连接质量。
确认您的机器配置满足 Kubernetes 的最低要求。例如,Kubernetes 至少需要 2GB 的内存和 2 个 CPU 核心才能运行。
如果上述方法都无法解决问题,您可以尝试使用其他 Kubernetes 工具(如 minikube)或在另一台机器上运行 kind create cluster 命令。
我是因为版本过高
Client Version: version.Info{Major:"1", Minor:"27", GitVersion:"v1.27.1", GitCommit:"4c9411232e10168d7b050c49a1b59f6df9d7ea4b", GitTreeState:"clean", BuildDate:"2023-04-14T13:21:19Z", GoVersion:"go1.20.3", Compiler:"gc", Platform:"linux/amd64"}
Kustomize Version: v5.0.1
卸载掉之前环境
apt --purge remove kubeadm
apt --purge remove kubelet
出现 Config not found可能是版本问题,你可以安装低版本(1.21.2)或者复制配置到文件解决
W0428 16:47:35.007624 75724 loader.go:222] Config not found: /etc/kubernetes/kubelet.conf
apt --purge remove kubectl
curl -x YOUR_PROXY_SERVER:PORT -LO https://dl.k8s.io/v1.21.2/bin/linux/amd64/kubectl
chmod 755 ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl
kubectl version --client
或者复制配置到文件
cat $KUBECONFIG
复制
vim /etc/kubernetes/kubelet.conf
粘贴
:wq
centos7出现这个问题解决 Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: cgroup namespaces aren’t enabled in the kernel: unknown.
是因为Kind 0.20.0 没法在内核 RHEL 7 VM (kernel 3.10.0) 中安装
你可以降低kind版本解决问题,我是降低到kind v0.10.0解决的
安装kind v0.10.0版本,怎么安装前文有说,
docker exec进入kind容器之后发现kubectl使用报错:The connection to the server localhost:8080 was refused - did you specify the right host or port?
解决方案设置环境变量
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> /etc/profile
查看kind K8s 运行结构
#查看集群
kubectl cluster-info --context kind
#查看node
kubectl get nodes
#查看kube-system空间内运行的pod
kubectl get pods -n kube-system
使用K8S
部署nginx 测试
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
kubectl get pod,svc
重新开一个窗口进入k8s容器内部,因为这个端口你没有暴露出来浏览器访问不了
docker exec -it kind-control-plane /bin/bash
curl http://127.0.0.1:31305
使用yaml文件部署nginx测试
service.yaml
kind: Service
apiVersion: v1
metadata:
name: nginx-svc
spec:
selector:
app: nginx
type: NodePort
ports:
- port: 80
targetPort: 80
nodePort: 30001
kubectl apply -f nginx.yaml
然后你你可以浏览器 http://127.0.0.1:30001访问了(因为30001是暴露了的)
更多推荐
所有评论(0)