Skip to content

Latest commit

 

History

History
224 lines (139 loc) · 5.3 KB

README_en.md

File metadata and controls

224 lines (139 loc) · 5.3 KB

Enable Kubernetes on Docker for Mac/Windows in China

中文 | English

NOTE:

  • The master branch is tested with Docker for Mac/Windows version 2.0.1.x (with Docker 18.09.1 and Kubernetes 1.13.0).
    • If you want to use v2.0.0.2/v2.0.0.3 (with Docker CE 18.09.1 and Kubernetes 1.10.11), please use the 18.09 branch git checkout v2.0.0.2
    • If you want to use Docker CE 18.09/18.06 (with Kubernetes 1.10.3), please use the 18.09 branch git checkout 18.09
    • If you want to use Docker CE 18.03, please use the 18.03 branch git checkout 18.03

Enable Kubernetes on Docker for Mac

Config registry mirror for Docker daemon with https://registry.docker-cn.com only if in China

mirror

Optional: config the CPU and memory for Kubernetes, 4GB RAM or more is suggested.

resource

Preload Kubernetes images form Alibaba Cloud Registry Service, NOTE: you can modify the images.properties for your own images

./load_images.sh

Enable Kubernetes in Docker for Mac, and wait a while for Kubernetes is running

k8s

Enable Kubernetes on Docker for Windows

Config registry mirror for Docker daemon with https://registry.docker-cn.com

mirror

Optional: config the CPU and memory for Kubernetes, 4GB RAM or more is suggested.

resource

Preload Kubernetes images form Alibaba Cloud Registry Service, NOTE: you can modify the images.properties for your own images

In Bash shell

./load_images.sh

or in PowerShell of Windows

 .\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 in Docker for Windows, and wait a while for Kubernetes is running

k8s

Config Kubernetes

Optional: switch the context to docker-for-desktop (under docker ce 18.09, the conext is docker-desktop)

kubectl config use-context docker-for-desktop

Verify Kubernetes installation

kubectl cluster-info
kubectl get nodes

Deploy Kubernetes dashboard

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml

or

kubectl create -f kubernetes-dashboard.yaml

Start proxy for API server

kubectl proxy

Access Kubernetes dashboard

http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!/overview?namespace=default

Config kubeconfig (Or skip)

For Mac

TOKEN=$(kubectl -n kube-system describe secret default| awk '$1=="token:"{print $2}')
kubectl config set-credentials docker-for-desktop --token="${TOKEN}"

For Windows

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

Choose kubeconfig file (Optional)

resource

Choose kubeconfig file, Path:

Win: %UserProfile%\.kube\config
Mac: $HOME/.kube/config

Click login, go to Kubernetes Dashboard

Install Helm

Install helm following the instruction on https://github.com/helm/helm/blob/master/docs/install.md

For Mac OS

# Use homebrew on Mac
brew install kubernetes-helm

# Install Tiller into your Kubernetes cluster
helm init --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.12.2 --skip-refresh

# update charts repo (Optional)
helm repo update

For Windows

# Use Chocolatey on Windows
# NOTE: please ensure you can access googleapis
choco install kubernetes-helm

# Install Tiller into your Kubernetes cluster
helm init --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.12.2 --skip-refresh

# update charts repo (Optional)
helm repo update

Install Istio

More details can be found in https://istio.io/docs/setup/kubernetes/

Download Istio 1.1.1 and install CLI

curl -L https://git.io/getLatestIstio | sh -
cd istio-1.1.1/
export PATH=$PWD/bin:$PATH

Install Istio with Helm chart

# Install the istio-init chart to bootstrap all the Istio’s CRDs
helm install install/kubernetes/helm/istio-init --name istio-init --namespace istio-system

# Verify that all Istio CRDs were committed to the Kubernetes api-server
kubectl get crds | grep 'istio.io\|certmanager.k8s.io' | wc -l

# Install the istio chart
helm install install/kubernetes/helm/istio --name istio --namespace istio-system

Check status of istio release

helm status istio

Enable automatic sidecar injection for default namespace

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

Install Book Info sample

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


Confirm application is running

​```bash
export GATEWAY_URL=localhost:80
curl -o /dev/null -s -w "%{http_code}\n" http://${GATEWAY_URL}/productpage

Delete Istio

helm del --purge istio
kubectl delete -f install/kubernetes/helm/istio/templates/crds.yaml -n istio-system