1. k8s_install_by_minikube
- 國內安裝 minikube
1.1. 安裝准備
1.1.1. 安裝配置 docker 環境
- 使用阿里雲源安裝 docker
mkdir -p /opt/tools/k8s
cd /opt/tools/k8s
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
1.1.2. 安裝 kubectl
- 下載 kubectl
wget "https://storage.googleapis.com/kubernetes-release/release/v1.18.1/bin/linux/amd64/kubectl" -O "/usr/local/bin/kubectl"
chmod 755 /usr/local/bin/kubectl
kubectl version
- 更新 kubectl 版本
wget "https://storage.googleapis.com/kubernetes-release/release/v1.20.2/bin/linux/amd64/kubectl" -O "/usr/local/bin/kubectl"
chmod 755 /usr/local/bin/kubectl
kubectl version
1.1.3. 安裝基礎工具
apt install conntrack -y
1.2. 下載安裝 minikube
1.2.1. 國內主機推薦-安裝阿里雲版本的 minikube-v1.18.1
- 國內主機可以使用阿里雲鏡像倉庫下載安裝
curl -Lo minikube https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/releases/v1.18.1/minikube-linux-amd64
chmod 755 minikube
mv minikube /usr/local/bin/
ll /usr/local/bin/minikube
文檔:https://developer.aliyun.com/article/221687
其他:https://developer.aliyun.com/article/672675
倉庫:https://github.com/AliyunContainerService/minikube
1.2.2. 國外主機推薦-安裝最新版 minikube
- 國外主機可以嘗試下載安裝最新版 minikube,體驗新功能
- 最新版需要從谷歌倉庫下載,國內訪問可能會有限制
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
ll /usr/local/bin/
官方倉庫:https://github.com/kubernetes/minikube/releases/tag/v1.19.0
官方文檔:https://minikube.sigs.k8s.io/docs/start/
1.3. 使用 minikube 安裝 k8s 集群
1.3.1. 刪除舊的 minikube 虛擬機及緩存
minikube delete
rm -rf /root/.minikube
1.3.2. 使用 minikube 啟動 k8s 虛擬機
- 默認聯網安裝最新版 k8s 集群,使用官方倉庫,國內主機可能安裝失敗
minikube start
- 國內主機建議使用阿里雲倉庫安裝指定版本的 k8s 集群
# 指定安裝版本
minikube start --vm-driver=none --registry-mirror=https://registry.docker-cn.com --image-mirror-country cn --kubernetes-version=v1.18.3
- 常用安裝選項
# 為了訪問海外的資源,阿里雲提供了一系列基礎設施,請按照如下參數進行配置。其中常見參數
--driver=*** 從1.5.0版本開始,Minikube缺省使用本地最好的驅動來創建Kubernetes本地環境,測試過的版本 docker, kvm
--image-mirror-country cn 將缺省利用 registry.cn-hangzhou.aliyuncs.com/google_containers 作為安裝Kubernetes的容器鏡像倉庫 (阿里雲版本可選)
--iso-url=*** 利用阿里雲的鏡像地址下載相應的 .iso 文件 (阿里雲版本可選)
--registry-mirror=*** 為了拉取Docker Hub鏡像,需要為 Docker daemon 配置鏡像加速,參考阿里雲鏡像服務
--cpus=2 為minikube虛擬機分配CPU核數
--memory=2048mb 為minikube虛擬機分配內存數
--kubernetes-version=*** minikube 虛擬機將使用的 kubernetes 版本
- 其他不常用的安裝選項
# 使用舊版本運行第二個 minikube 虛擬機,驅動為 docker 時可用
minikube start -p aged --kubernetes-version=v1.16.1
# 安裝 minikube,指定虛擬機配置
minikube start --cpus=4 --memory=4096mb
# 安裝 minikube,指定虛擬機使用 Docker 驅動,適用於物理機安裝 minikube
minikube start --driver=docker
# 安裝 minikube,指定虛擬機使用 KVM2 驅動,適用於 kvm 虛擬機安裝 minikube
minikube start --driver=kvm2
1.4. minikube 集群管理命令
- minikube 常用命令
# 檢查安裝結果
minikube help
minikube status
kubectl version
kubectl get nodes
kubectl get pods -A
# 查詢運行的 pod
minikube kubectl -- get po -A
# 掛起虛擬機
minikube pause
# 停止虛擬機
minikube stop
# 修改虛擬機內存配置
minikube config set memory 16384
# 查看 minikube 的安裝目錄列表
minikube addons list
# 啟動 dashboard 控制台
minikube dashboard
curl 127.0.0.1:23341
# 刪除所有 minikube 虛擬機
minikube delete --all
# 部署目錄
/var/lib/kubelet
/var/lib/minikube
- k8s 常用命令
# 創建帶有終端的 Pod,並進入(后續測試用)
kubectl run busybox --image=busybox -it
# 部署 app 進行測試
kubectl run nginx02 --image=nginx
kubectl run hello-minikube --image=k8s.gcr.io/echoserver:1.4 --port=8081
# deployment
kubectl create deployment hello-minikube --image=k8s.gcr.io/echoserver:1.4
kubectl expose deployment hello-minikube --type=NodePort --port=8080
kubectl get service hello-minikube
# 使用 minikube 訪問服務
minikube service hello-minikube
# 使用端口映射訪問服務
kubectl port-forward service/hello-minikube 7080:8080
curl http://localhost:7080/
# 使用 LB 類型的 deployment 測試
kubectl create deployment balanced --image=k8s.gcr.io/echoserver:1.4
kubectl expose deployment balanced --type=LoadBalancer --port=8080
minikube tunnel
kubectl get services balanced
1.5. 實例演示
- 實例演示:安裝默認版本 minikube
root@zuiyoujie:/opt/scrtips/k8s# ll /usr/local/bin/
total 95516
drwxr-xr-x 2 root root 4096 Apr 19 17:50 ./
drwxr-xr-x 13 root root 4096 Apr 6 12:31 ../
-rwxr-xr-x 1 root root 44032000 May 20 2020 kubectl*
-rwxr-xr-x 1 root root 53765167 Apr 19 17:49 minikube*
-------------------------
root@zuiyoujie:/opt/tools/k8s# minikube start
* minikube v1.18.1 on Ubuntu 18.04
* Automatically selected the docker driver
* The "docker" driver should not be used with root privileges.
* If you are running minikube within a VM, consider using --driver=none:
* https://minikube.sigs.k8s.io/docs/reference/drivers/none/
root@zuiyoujie:/opt/tools/k8s# minikube start --vm-driver=none --registry-mirror=https://registry.docker-cn.com --image-mirror-country cn
* minikube v1.18.1 on Ubuntu 18.04 (amd64)
* Using the none driver based on user configuration
* Using image repository registry.cn-hangzhou.aliyuncs.com/google_containers
* Starting control plane node minikube in cluster minikube
* Running on localhost (CPUs=4, Memory=7774MB, Disk=100664MB) ...
* OS release is Ubuntu 18.04.3 LTS
* Preparing Kubernetes v1.20.2 on Docker 20.10.6 ...
- kubelet.resolv-conf=/run/systemd/resolve/resolv.conf
> kubeadm.sha256: 64 B / 64 B [--------------------------] 100.00% ? p/s 0s
> kubectl.sha256: 64 B / 64 B [--------------------------] 100.00% ? p/s 0s
> kubelet.sha256: 64 B / 64 B [--------------------------] 100.00% ? p/s 0s
> kubeadm: 37.40 MiB / 37.40 MiB [---------------] 100.00% 17.10 MiB p/s 2s
> kubectl: 38.37 MiB / 38.37 MiB [---------------] 100.00% 15.26 MiB p/s 3s
> kubelet: 108.73 MiB / 108.73 MiB [-------------] 100.00% 12.13 MiB p/s 9s
- Generating certificates and keys ...
- Booting up control plane ...
- Configuring RBAC rules ...
* Configuring local host environment ...
*
! The 'none' driver is designed for experts who need to integrate with an existing VM
* Most users should use the newer 'docker' driver instead, which does not require root!
* For more information, see: https://minikube.sigs.k8s.io/docs/reference/drivers/none/
*
! kubectl and minikube configuration will be stored in /root
! To use kubectl or minikube commands as your own user, you may need to relocate them. For example, to overwrite your own settings, run:
*
- sudo mv /root/.kube /root/.minikube $HOME
- sudo chown -R $USER $HOME/.kube $HOME/.minikube
*
* This can also be done automatically by setting the env var CHANGE_MINIKUBE_NONE_USER=true
* Verifying Kubernetes components...
- Using image registry.cn-hangzhou.aliyuncs.com/google_containers/storage-provisioner:v4 (global image repository)
* Enabled addons: default-storageclass, storage-provisioner
* Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default
root@zuiyoujie:/opt/tools/k8s#
---------------------------------
root@zuiyoujie:/opt/scrtips/k8s# kubectl version
Client Version: version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.3", GitCommit:"2e7996e3e2712684bc73f0dec0200d64eec7fe40", GitTreeState:"clean", BuildDate:"2020-05-20T12:52:00Z", GoVersion:"go1.13.9", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.3", GitCommit:"2e7996e3e2712684bc73f0dec0200d64eec7fe40", GitTreeState:"clean", BuildDate:"2020-05-20T12:43:34Z", GoVersion:"go1.13.9", Compiler:"gc", Platform:"linux/amd64"}
root@zuiyoujie:/opt/scrtips/k8s#
root@zuiyoujie:/opt/scrtips/k8s# kubectl get pod -A
NAMESPACE NAME READY STATUS RESTARTS AGE
default busybox 1/1 Running 1 9m11s
default hello-minikube 0/1 ErrImagePull 0 7m42s
kube-system coredns-546565776c-ggfpx 1/1 Running 1 21m
kube-system etcd-zuiyoujie 1/1 Running 1 21m
kube-system kube-apiserver-zuiyoujie 1/1 Running 1 21m
kube-system kube-controller-manager-zuiyoujie 1/1 Running 1 21m
kube-system kube-proxy-x5pft 1/1 Running 1 21m
kube-system kube-scheduler-zuiyoujie 1/1 Running 1 21m
kube-system storage-provisioner
root@zuiyoujie:/opt/scrtips/k8s# kubectl run busybox --image=busybox -it
Error from server (AlreadyExists): pods "busybox" already exists
root@zuiyoujie:/opt/scrtips/k8s# kubectl attach busybox -c busybox -it
If you don't see a command prompt, try pressing enter.
/ #
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
/ #
Session ended, resume using 'kubectl attach busybox -c busybox -i -t' command when the pod is running
- 實例演示:安裝指定版本 minikube
root@zuiyoujie:/opt/tools/k8s# minikube delete
* Uninstalling Kubernetes v1.20.2 using kubeadm ...
* Deleting "minikube" in none ...
* Removed all traces of the "minikube" cluster.
root@zuiyoujie:/opt/tools/k8s# minikube start --vm-driver=none --registry-mirror=https://registry.docker-cn.com --image-mirror-country cn --kubernetes-version=v1.18.3
* minikube v1.18.1 on Ubuntu 18.04 (amd64)
* Using the none driver based on user configuration
* Using image repository registry.cn-hangzhou.aliyuncs.com/google_containers
* Starting control plane node minikube in cluster minikube
* Running on localhost (CPUs=4, Memory=7774MB, Disk=100664MB) ...
* OS release is Ubuntu 18.04.3 LTS
* Preparing Kubernetes v1.18.3 on Docker 20.10.6 ...
- kubelet.resolv-conf=/run/systemd/resolve/resolv.conf
> kubelet.sha256: 65 B / 65 B [--------------------------] 100.00% ? p/s 0s
> kubectl.sha256: 65 B / 65 B [--------------------------] 100.00% ? p/s 0s
> kubeadm.sha256: 65 B / 65 B [--------------------------] 100.00% ? p/s 0s
> kubeadm: 37.97 MiB / 37.97 MiB [---------------] 100.00% 11.72 MiB p/s 3s
> kubectl: 41.99 MiB / 41.99 MiB [---------------] 100.00% 10.95 MiB p/s 4s
> kubelet: 108.04 MiB / 108.04 MiB [------------] 100.00% 10.87 MiB p/s 11s
- Generating certificates and keys ...
- Booting up control plane ...
- Configuring RBAC rules ...
* Configuring local host environment ...
*
! The 'none' driver is designed for experts who need to integrate with an existing VM
* Most users should use the newer 'docker' driver instead, which does not require root!
* For more information, see: https://minikube.sigs.k8s.io/docs/reference/drivers/none/
*
! kubectl and minikube configuration will be stored in /root
! To use kubectl or minikube commands as your own user, you may need to relocate them. For example, to overwrite your own settings, run:
*
- sudo mv /root/.kube /root/.minikube $HOME
- sudo chown -R $USER $HOME/.kube $HOME/.minikube
*
* This can also be done automatically by setting the env var CHANGE_MINIKUBE_NONE_USER=true
* Verifying Kubernetes components...
- Using image registry.cn-hangzhou.aliyuncs.com/google_containers/storage-provisioner:v4 (global image repository)
* Enabled addons: default-storageclass, storage-provisioner
! /usr/local/bin/kubectl is version 1.20.2, which may have incompatibilites with Kubernetes 1.18.3.
- Want kubectl v1.18.3? Try 'minikube kubectl -- get pods -A'
* Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default
root@zuiyoujie:/opt/tools/k8s# kubectl get node
NAME STATUS ROLES AGE VERSION
zuiyoujie Ready master 4m26s v1.18.3
root@zuiyoujie:/opt/tools/k8s# kubectl version
Client Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.2", GitCommit:"faecb196815e248d3ecfb03c680a4507229c2a56", GitTreeState:"clean", BuildDate:"2021-01-13T13:28:09Z", GoVersion:"go1.15.5", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.3", GitCommit:"2e7996e3e2712684bc73f0dec0200d64eec7fe40", GitTreeState:"clean", BuildDate:"2020-05-20T12:43:34Z", GoVersion:"go1.13.9", Compiler:"gc", Platform:"linux/amd64"}
root@zuiyoujie:/opt/tools/k8s#