denverdino
9a6c353209
|
3 months ago | |
---|---|---|
images | 5 years ago | |
sample | 3 years ago | |
.gitignore | 1 year ago | |
README.md | 3 months ago | |
README_en.md | 3 months ago | |
getLatestIstio.ps1 | 5 years ago | |
images.properties | 3 months ago | |
k8s命令 | 6 years ago | |
kube-system-default.yaml | 3 years ago | |
kubernetes-dashboard.yaml | 2 years ago | |
load_images.ps1 | 6 years ago | |
load_images.sh | 5 years ago |
README_en.md
Enable Kubernetes on Docker Desktop for Mac/Windows in China
中文 | English
NOTE:
- The master branch is tested with Docker Desktop for Mac/Windows version 4.33.0 (with Docker 27.1.1 and Kubernetes v1.30.2).
- If you want to use with other version, pls check version of Kubernetes,Docker -> About Docker Desktop
- For Kubernetes v1.30.2, please use the v1.30.2 branch
git checkout v1.30.2
- For Kubernetes v1.29.2, please use the v1.29.2 branch
git checkout v1.29.2
- For Kubernetes v1.29.1, please use the v1.29.1 branch
git checkout v1.29.1
- For Kubernetes v1.28.2, please use the v1.28.2 branch
git checkout v1.28.2
- For Kubernetes v1.27.2, please use the v1.27.2 branch
git checkout v1.27.2
- For Kubernetes v1.25.9, please use the v1.25.9 branch
git checkout v1.25.9
- For Kubernetes v1.25.4, please use the v1.25.4 branch
git checkout v1.25.4
- For Kubernetes v1.25.2, please use the v1.25.2 branch
git checkout v1.25.2
- For Kubernetes v1.25.0, please use the v1.25.0 branch
git checkout v1.25.0
- For Kubernetes v1.24.2, please use the v1.24.2 branch
git checkout v1.24.2
- For Kubernetes v1.30.2, please use the v1.30.2 branch
Enable Kubernetes on Docker Desktop
Config registry mirror for Docker daemon with https://docker.mirrors.ustc.edu.cn
only if in China
Optional: config the CPU and memory for Kubernetes, 4GB RAM or more is suggested.
Preload Kubernetes images form Alibaba Cloud Registry Service, NOTE: you can modify the images.properties
for your own images
On Mac, execute the following scripts
./load_images.sh
Or on Windows, execute the following scripts in PowerShell
.\load_images.ps1
NOTE: if you failed to start PowerShell scripts for security policy, please execute Set-ExecutionPolicy RemoteSigned
command in PowerShell with "Run as administrator" option.
Enable Kubernetes, and wait a while for Kubernetes is running
TIPS:
On Mac:
If facing problems when deploy Kubernetes, you can check ocker desktop application's log to get realtime log:
pred='process matches ".*(ocker|vpnkit).*"
|| (process in {"taskgated-helper", "launchservicesd", "kernel"} && eventMessage contains[c] "docker")'
/usr/bin/log stream --style syslog --level=debug --color=always --predicate "$pred"
On Windows:
If facing problems when deploy Kubernetes, you can check docker log in C:\ProgramData\DockerDesktop\service.txt, check Kuberneteslog in C:\Users\yourUserName\AppData\Local\Docker\log.txt
problem diagnosis:
If you see Kubernetes stuck in Starting, please refer:
- Issue 3769(comment) or Issue 3649(comment)
- On MacOS, execute
rm -fr '~/Library/Group\ Containers/group.com.docker/pki'
- On Windows, delete folders 'C:\ProgramData\DockerDesktop\pki' and 'C:\Users\yourUserName\AppData\Local\Docker\pki'
- On MacOS, execute
- Issue 1962(comment)
Config Kubernetes
Optional: switch the context to docker-desktop
(In the former version, the context is docker-for-desktop
)
kubectl config use-context docker-desktop
Verify Kubernetes installation
kubectl cluster-info
kubectl get nodes
Deploy Kubernetes dashboard
Install Kubernetes dashboard
$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.1/aio/deploy/recommended.yaml
or
kubectl apply -f kubernetes-dashboard.yaml
Check Kubernetes Dashboard status
kubectl get pod -n kubernetes-dashboard
Start proxy for API server
kubectl proxy
Access Kubernetes dashboard
Config Token for dashboard
Authorize kube-system
default service account
kubectl apply -f kube-system-default.yaml
For Mac
TOKEN=$(kubectl -n kube-system describe secret default| awk '$1=="token:"{print $2}')
kubectl config set-credentials docker-desktop --token="${TOKEN}"
echo $TOKEN
For Windows
$TOKEN=((kubectl -n kube-system describe secret default | Select-String "token:") -split " +")[1]
kubectl config set-credentials docker-desktop --token="${TOKEN}"
echo $TOKEN
Login dashboard
Choose Token, and input the output from above result
Or, choose Kubeconfig, select file from below path:
Win: %UserProfile%\.kube\config
Mac: $HOME/.kube/config
Click login, go to Kubernetes Dashboard
Config Ingress
Note: If you are testing Istio, donot need to install Ingress
Install Ingress
- If the installation script cannot be installed, you can jump to this address to view the latest operations
Install
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.2.0/deploy/static/provider/cloud/deploy.yaml
Or
kubectl apply -f ingress-nginx-controller.yaml
Check
kubectl get pods --all-namespaces -l app.kubernetes.io/name=ingress-nginx
Test the sample app
Deploy the test application, see Community Article for details
kubectl create -f sample/apple.yaml
kubectl create -f sample/banana.yaml
kubectl create -f sample/ingress.yaml
Test the sample app
$ curl -kL http://localhost/apple
apple
$ curl -kL http://localhost/banana
banana
Remove the sample app
kubectl delete -f sample/apple.yaml
kubectl delete -f sample/banana.yaml
kubectl delete -f sample/ingress.yaml
Delete Ingress
kubectl delete -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.2.0/deploy/static/provider/cloud/deploy.yaml
Or
kubectl delete -f ingress-nginx-controller.yaml
Install Helm
Install helm following the instruction on https://helm.sh/docs/intro/install/
For Mac OS
# Use homebrew on Mac
brew install helm
# add helm repo
helm repo add stable http://mirror.azure.cn/kubernetes/charts/
# update charts repo
helm repo update
For Windows
# Use Chocolatey on Windows
# NOTE: please ensure you can access googleapis
choco install kubernetes-helm
# add helm repo
helm repo add stable http://mirror.azure.cn/kubernetes/charts/
# update charts repo
helm repo update
Setup Istio
More details can be found in https://istio.io/docs/setup/getting-started/
Download Istio 1.5.0 and install CLI
curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.5.0 sh -
cd istio-1.5.0/
export PATH=$PWD/bin:$PATH
In Windows, you can download the Istio manually, or copy getLatestIstio.ps1
to your Istio directory, and execute the script.
NOTE: It refer the scripts from community.
.\getLatestIstio.ps1
Install Istio
istioctl manifest apply --set profile=demo
Check status of istio release
kubectl get pods -n istio-system
Enable automatic sidecar injection for default
namespace
kubectl label namespace default istio-injection=enabled
kubectl get namespace -L istio-injection
Install Book Info sample
Please refer https://istio.io/docs/examples/bookinfo/
kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
Check the resources of sample application
kubectl get svc,pod
Confirm the application is running
kubectl exec -it $(kubectl get pod -l app=ratings -o jsonpath='{.items[0].metadata.name}') -c ratings -- curl productpage:9080/productpage | grep -o "<title>.*</title>"
Create Ingress Gateway
kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml
Check Gateway status
kubectl get gateway
Confirm the application is accessible
export GATEWAY_URL=localhost:80
curl -s http://${GATEWAY_URL}/productpage | grep -o "<title>.*</title>"
Open with browser http://localhost/productpage
Confirm application is running
export GATEWAY_URL=localhost:80
curl -o /dev/null -s -w "%{http_code}\n" http://${GATEWAY_URL}/productpage
Cleanup sample application
samples/bookinfo/platform/kube/cleanup.sh
Delete Istio
istioctl manifest generate --set profile=demo | kubectl delete -f -