win10使用Docker Desktop开启Kubernetes

参考项目:https://github.com/AliyunContainerService/k8s-for-docker-desktop

先安装Docker Desktop

为 Docker daemon 配置镜像加速,参考阿里云镜像服务 或中科大镜像加速地址https://docker.mirrors.ustc.edu.cn

在Windows上,使用 PowerShell

 .\load_images.ps1

脚本中下载的镜像:

k8s.gcr.io/pause:3.8=registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.8
k8s.gcr.io/kube-controller-manager:v1.25.0=registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.25.0
k8s.gcr.io/kube-scheduler:v1.25.0=registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.25.0
k8s.gcr.io/kube-proxy:v1.25.0=registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.25.0
k8s.gcr.io/kube-apiserver:v1.25.0=registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.25.0
k8s.gcr.io/etcd:3.5.4-0=registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.5.4-0
k8s.gcr.io/coredns:v1.9.3=registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:v1.9.3
k8s.gcr.io/ingress-nginx/controller:v1.2.0=registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-ingress-controller:v1.2.0
k8s.gcr.io/ingress-nginx/kube-webhook-certgen:v1.1.1=registry.cn-hangzhou.aliyuncs.com/google_containers/kube-webhook-certgen:v1.1.1

foreach($line in Get-Content .\images.properties) {
$data = $line.Split('=')
$key = $data[0];
$value = $data[1];
Write-Output "$key=$value"
docker pull ${value}
docker tag ${value} ${key}
docker rmi ${value}
}

开启 Kubernetes,并等待 Kubernetes 开始运行

配置 Kubernetes

可选操作: 切换Kubernetes运行上下文至 docker-desktop (之前版本的 context 为 docker-for-desktop)

kubectl config use-context docker-desktop

验证 Kubernetes 集群状态

kubectl cluster-info
kubectl get nodes

配置 Kubernetes 控制台

部署 Kubernetes dashboard

kubectl apply -f kubernetes-dashboard.yaml

检查 kubernetes-dashboard 应用状态

kubectl get pod -n kubernetes-dashboard

开启 API Server 访问代理

kubectl proxy

通过如下 URL 访问 Kubernetes dashboard

http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/

配置控制台访问令牌

授权kube-system默认服务账号

kubectl apply -f kube-system-default.yaml
$TOKEN=((kubectl -n kube-system describe secret default | Select-String "token:") -split " +")[1]
kubectl config set-credentials docker-desktop --token="${TOKEN}"
echo $TOKEN

登录dashboard的时候

选择 令牌

输入上文控制台输出的内容

或者选择 Kubeconfig 文件,路径如下:

Win: %UserProfile%\.kube\config

点击登陆,进入Kubernetes Dashboard

安装 Ingress

源地址安装说明

- 若安装脚本无法安装,可以跳转到该地址查看最新操作

安装

kubectl apply -f ingress-nginx-controller.yaml

验证

kubectl get pods --all-namespaces -l app.kubernetes.io/name=ingress-nginx

测试示例应用

部署测试应用,详情参见社区文章

kubectl create -f sample/apple.yaml
kubectl create -f sample/banana.yaml
kubectl create -f sample/ingress.yaml

测试示例应用

$ curl -kL http://localhost/apple
apple
$ curl -kL http://localhost/banana
banana

删除示例应用

kubectl delete -f sample/apple.yaml
kubectl delete -f sample/banana.yaml
kubectl delete -f sample/ingress.yaml

删除 Ingress

kubectl delete -f .\ingress-nginx-controller.yaml

安装 Helm

可以根据文档安装 helm v3 https://helm.sh/docs/intro/install/ 在国内由于helm的cdn节点使用的是谷歌云所以可能访问不到,可以参考已存在的官方issue: helm/helm#7028

在Windows上安装

如果在后续使用 helm 安装组件的过程中出现版本兼容问题,可以参考 通过二进制包安装 思路安装匹配的版本

# Use Chocolatey on Windows
# 注:安装的时候需要保证网络能够访问googleapis这个域名
choco install kubernetes-helm

# Change helm repo
helm repo add stable http://mirror.azure.cn/kubernetes/charts/

# Update charts repo
helm repo update

测试 Helm (可选)

安装 Wordpress

helm install wordpress stable/wordpress

查看 wordpress 发布状态

helm status wordpress

卸载 wordpress 发布

helm uninstall wordpress

配置 Istio

说明:Istio Ingress Gateway和Ingress缺省的端口冲突,请移除Ingress并进行下面测试

可以根据文档安装 Istio https://istio.io/docs/setup/getting-started/

下载 Istio 1.5.0

curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.5.0 sh -
cd istio-1.5.0
export PATH=$PWD/bin:$PATH

在Windows上,您可以手工下载Istio安装包,或者把getLatestIstio.ps1拷贝到你希望下载 Istio 的目录,并执行 - 说明:根据社区提供的安装脚本修改而来

.\getLatestIstio.ps1

安装 Istio

istioctl manifest apply --set profile=demo

检查 Istio 状态

kubectl get pods -n istio-system

为 default 名空间开启自动 sidecar 注入

kubectl label namespace default istio-injection=enabled
kubectl get namespace -L istio-injection

安装 Book Info 示例

请参考 https://istio.io/docs/examples/bookinfo/

切换到istio-1.15.2目录下,运行:

kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml

查看示例应用资源

kubectl get svc,pod

确认示例应用在运行中

kubectl exec -it $(kubectl get pod -l app=ratings -o jsonpath='{.items[0].metadata.name}') -c ratings -- curl productpage:9080/productpage | findstr -o "<title>.*</title>"

创建 Ingress Gateway

kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml

查看 Gateway 配置

kubectl get gateway

确认示例应用可以访问

curl.exe -s http://localhost:80/productpage | findstr -o "<title>.*</title>"

可以通过浏览器访问

http://localhost/productpage

删除实例应用

samples/bookinfo/platform/kube/cleanup.sh

卸载 Istio

istioctl manifest generate --set profile=demo | kubectl delete -f -
 
posted on 2022-10-15 23:43  渐行渐远的那些人  阅读(559)  评论(0编辑  收藏  举报