步骤1:安装 Docker Desktop 4.16.3
在 Windows 上安装 Kubernetes 之前,你需要先安装 Docker Desktop。这可以在 Docker 的官方网站上找到并下载。
下载地址: https://desktop.docker.com/win/main/amd64/96739/Docker Desktop Installer.exe
Docker Desktop 4.16.3对应的k8s版本为 Kubernetes: v1.25.4如下图:
国内访问githubusercontent需要在 C:\Windows\System32\drivers\etc\host 中追加如下
199.232.68.133 raw.githubusercontent.com
步骤2:下载Kubernetes需要的镜像
先安装 Cygwin64 Terminal 允许在window环境下运行sh脚本,然后创建 load_images.sh 脚本,内容如下:
#!/bin/bash
#Docker Desktop:v4.16.3、Kubernetes: v1.25.4
#配置数组数据 array=("A" "B")
array=("registry.cn-hangzhou.aliyuncs.com/kubernetes_v1-25-4/desktop-kubernetes:kubernetes-v1.25.4-cni-v1.1.1-critools-v1.25.0-cri-dockerd-v0.2.6-1-debian=hubproxy.docker.internal:5000/docker/desktop-kubernetes:kubernetes-v1.25.4-cni-v1.1.1-critools-v1.25.0-cri-dockerd-v0.2.6-1-debian" "registry.cn-hangzhou.aliyuncs.com/kubernetes_v1-25-4/kube-apiserver:v1.25.4=registry.k8s.io/kube-apiserver:v1.25.4" "registry.cn-hangzhou.aliyuncs.com/kubernetes_v1-25-4/kube-controller-manager:v1.25.4=registry.k8s.io/kube-controller-manager:v1.25.4" "registry.cn-hangzhou.aliyuncs.com/kubernetes_v1-25-4/kube-proxy:v1.25.4=registry.k8s.io/kube-proxy:v1.25.4" "registry.cn-hangzhou.aliyuncs.com/kubernetes_v1-25-4/kube-scheduler:v1.25.4=registry.k8s.io/kube-scheduler:v1.25.4" "registry.cn-hangzhou.aliyuncs.com/kubernetes_v1-25-4/etcd:3.5.5-0=registry.k8s.io/etcd:3.5.5-0" "registry.cn-hangzhou.aliyuncs.com/kubernetes_v1-25-4/pause:3.8=registry.k8s.io/pause:3.8" "registry.cn-hangzhou.aliyuncs.com/kubernetes_v1-25-4/coredns:v1.9.3=registry.k8s.io/coredns/coredns:v1.9.3" "registry.cn-hangzhou.aliyuncs.com/kubernetes_v1-25-4/desktop-vpnkit-controller:v2.0=docker/desktop-vpnkit-controller:v2.0" "registry.cn-hangzhou.aliyuncs.com/kubernetes_v1-25-4/desktop-storage-provisioner:v2.0=docker/desktop-storage-provisioner:v2.0")
for item in ${array[@]}
do
OLD_IFS="$IFS" #保存当前shell默认的分割符,一会要恢复回去
IFS="=" #将shell的分割符号改为,“”
itemArr=($item) #分割符是“,”,"hello,shell,split,test" 赋值给array 就成了数组赋值
IFS="$OLD_IFS" #恢复shell默认分割符配置
#echo "${itemArr[0]}=${itemArr[1]}" #读取数据
docker pull ${itemArr[0]}
docker tag ${itemArr[0]} ${itemArr[1]}
docker rmi ${itemArr[0]}
done
然后去除Window环境下编辑Shell脚本的\r,打开Cygwin64 Terminal进入到load_images.sh同级目录运行
sed -i 's/\r//' load_images.sh
PS:小编已经把window环境下的k8s需要的镜像提交国内镜像上,使用本脚本下载速度要快许多。也可自行搜索镜像下载
步骤3:安装Kubernetes
等docker镜像下载完后进入Docker Desktop ->Settings -> Kubernetes ->勾选 Enable Kubernetes 然后点击 Apply & Restart,等待如下图:
当左下角K8s图标变绿了说明安装成功,如下图:
打开Cygwin64 Terminal输入如下验证版本是否安装成功
kubectl version
如下图:
步骤4:安装 Kubernetes 仪表板
一旦 Kubernetes 启动,你可以通过访问 Kubernetes 仪表板来管理你的 Kubernetes 环境。你可以使用以下命令访问 Kubernetes 仪表板:
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.1/aio/deploy/recommended.yaml #下载recommended.yaml
然后编辑#备注部分
kind: Service
apiVersion: v1
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kubernetes-dashboard
spec:
type: NodePort #设定NodePort
ports:
- port: 443
targetPort: 8443
nodePort: 31443 #设定为固定端口
selector:
k8s-app: kubernetes-dashboard
...
args:
- --auto-generate-certificates
- --token-ttl=86400 #增加 (修改kubernetes-dashboard默认token认证时间)
- --namespace=kubernetes-dashboard
...
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.1/aio/deploy/recommended.yaml #安装Dashboard
kubectl get pod -n kubernetes-dashboard #查看是否在运行
kubectl apply -f kube-system-default.yaml #添加默认账号
kubectl get pods -n kube-system #查看pods情况
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml #必须安装Pod网络CNI插件
kubectl get pods -n kube-system #查看 pods 情况
kubectl proxy --port=8001 #启动dashboard服务
kubectl -n kube-system describe secret default #获取Token
启动dashboard服务后再浏览器输入:
http://127.0.0.1:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/#/login #查看Dashboard服务。如下图:
步骤5:安装hello world 测试
kubectl create deployment web --image=linkinstar/mini-go:v1.0 #创建镜像
kubectl get pods
kubectl expose deployment web --type=NodePort --port=8080 --name=web #暴露端口
kubectl get svc #查看启动服务
curl http://127.0.0.1:<kubectl get service服务的第二个端口> #验证服务器是否能正常访问 例如 curl http://127.0.0.1:30418
PS:返回 hello world
netstat -anp | grep 8080 #查看占用端口 或 lsof -i :8080
kill <pid>#结束进程