下载minkube
[yeqiang@localhost ~]$ cd Downloads/
[yeqiang@localhost Downloads]$ curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 52.8M 100 52.8M 0 0 534k 0 0:01:41 0:01:41 --:--:-- 488k
安装到/usr/local/bin
[yeqiang@localhost Downloads]$ sudo install minikube-linux-amd64 /usr/local/bin/minikube
启动集群
[yeqiang@localhost ~]$ minikube start
😄 minikube v1.11.0 on Fedora 31
✨ Automatically selected the virtualbox driver
💿 Downloading VM boot image ...
> minikube-v1.11.0.iso.sha256: 65 B / 65 B [-------------] 100.00% ? p/s 0s
> minikube-v1.11.0.iso: 90.08 MiB / 174.99 MiB 51.48% 562.65 KiB p/s ETA 2^ > minikube-v1.11.0.iso: 174.99 MiB / 174.99 MiB 100.00% 538.18 KiB p/s 5m3
👍 Starting control plane node minikube in cluster minikube
💾 Downloading Kubernetes v1.18.3 preload ...
> preloaded-images-k8s-v3-v1.18.3-docker-overlay2-amd64.tar.lz4: 526.01 MiB
🔥 Creating virtualbox VM (CPUs=2, Memory=6000MB, Disk=20000MB) ...
❗ This VM is having trouble accessing https://k8s.gcr.io
💡 To pull new external images, you may need to configure a proxy: https://minikube.sigs.k8s.io/docs/reference/networking/proxy/
E0604 11:39:14.687991 56590 cache.go:63] save image to file "k8s.gcr.io/kube-scheduler:v1.18.3" -> "/home/yeqiang/.minikube/cache/images/k8s.gcr.io/kube-scheduler_v1.18.3" failed: nil image for k8s.gcr.io/kube-scheduler:v1.18.3: Get https://k8s.gcr.io/v2/: dial tcp 74.125.204.82:443: i/o timeout
E0604 11:39:14.696680 56590 cache.go:63] save image to file "k8s.gcr.io/kube-controller-manager:v1.18.3" -> "/home/yeqiang/.minikube/cache/images/k8s.gcr.io/kube-controller-manager_v1.18.3" failed: nil image for k8s.gcr.io/kube-controller-manager:v1.18.3: Get https://k8s.gcr.io/v2/: dial tcp 74.125.204.82:443: i/o timeout
E0604 11:39:14.733532 56590 cache.go:63] save image to file "gcr.io/k8s-minikube/storage-provisioner:v1.8.1" -> "/home/yeqiang/.minikube/cache/images/gcr.io/k8s-minikube/storage-provisioner_v1.8.1" failed: nil image for gcr.io/k8s-minikube/storage-provisioner:v1.8.1: Get https://gcr.io/v2/: dial tcp 108.177.125.82:443: i/o timeout
E0604 11:39:14.764450 56590 cache.go:63] save image to file "k8s.gcr.io/kube-apiserver:v1.18.3" -> "/home/yeqiang/.minikube/cache/images/k8s.gcr.io/kube-apiserver_v1.18.3" failed: nil image for k8s.gcr.io/kube-apiserver:v1.18.3: Get https://k8s.gcr.io/v2/: dial tcp 74.125.204.82:443: i/o timeout
E0604 11:39:14.801233 56590 cache.go:63] save image to file "k8s.gcr.io/etcd:3.4.3-0" -> "/home/yeqiang/.minikube/cache/images/k8s.gcr.io/etcd_3.4.3-0" failed: nil image for k8s.gcr.io/etcd:3.4.3-0: Get https://k8s.gcr.io/v2/: dial tcp 74.125.204.82:443: i/o timeout
E0604 11:39:14.877560 56590 cache.go:63] save image to file "k8s.gcr.io/kube-proxy:v1.18.3" -> "/home/yeqiang/.minikube/cache/images/k8s.gcr.io/kube-proxy_v1.18.3" failed: nil image for k8s.gcr.io/kube-proxy:v1.18.3: Get https://k8s.gcr.io/v2/: dial tcp 74.125.204.82:443: i/o timeout
E0604 11:39:14.901485 56590 cache.go:63] save image to file "k8s.gcr.io/coredns:1.6.7" -> "/home/yeqiang/.minikube/cache/images/k8s.gcr.io/coredns_1.6.7" failed: nil image for k8s.gcr.io/coredns:1.6.7: Get https://k8s.gcr.io/v2/: dial tcp 74.125.204.82:443: i/o timeout
E0604 11:39:14.922899 56590 cache.go:63] save image to file "k8s.gcr.io/pause:3.2" -> "/home/yeqiang/.minikube/cache/images/k8s.gcr.io/pause_3.2" failed: nil image for k8s.gcr.io/pause:3.2: Get https://k8s.gcr.io/v2/: dial tcp 74.125.204.82:443: i/o timeout
E0604 11:40:00.602135 56590 cache.go:63] save image to file "kubernetesui/dashboard:v2.0.0" -> "/home/yeqiang/.minikube/cache/images/kubernetesui/dashboard_v2.0.0" failed: write: read tcp 192.168.1.167:35154->104.18.123.25:443: read: connection reset by peer
E0604 11:40:00.602147 56590 cache.go:63] save image to file "kubernetesui/metrics-scraper:v1.0.2" -> "/home/yeqiang/.minikube/cache/images/kubernetesui/metrics-scraper_v1.0.2" failed: write: read tcp 192.168.1.167:35154->104.18.123.25:443: read: connection reset by peer
E0604 11:40:00.602562 56590 cache.go:161] Error caching images: Caching images for kubeadm: caching images: caching image "/home/yeqiang/.minikube/cache/images/k8s.gcr.io/kube-scheduler_v1.18.3": nil image for k8s.gcr.io/kube-scheduler:v1.18.3: Get https://k8s.gcr.io/v2/: dial tcp 74.125.204.82:443: i/o timeout
🐳 Preparing Kubernetes v1.18.3 on Docker 19.03.8 ...
🔎 Verifying Kubernetes components...
🌟 Enabled addons: default-storageclass, storage-provisioner
🏄 Done! kubectl is now configured to use "minikube"
💡 For best results, install kubectl: https://kubernetes.io/docs/tasks/tools/install-kubectl/
报错,似乎不影响
查看集群状态
[yeqiang@localhost ~]$ minikube kubectl -- get po -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-66bff467f8-4zr6j 1/1 Running 0 33m
kube-system coredns-66bff467f8-sdcbs 1/1 Running 0 33m
kube-system etcd-minikube 1/1 Running 0 33m
kube-system kube-apiserver-minikube 1/1 Running 0 33m
kube-system kube-controller-manager-minikube 1/1 Running 0 33m
kube-system kube-proxy-zstfz 1/1 Running 0 33m
kube-system kube-scheduler-minikube 1/1 Running 0 33m
kube-system storage-provisioner 1/1 Running 0 33m
安装kubectl,方便操作
[yeqiang@localhost Downloads]$ curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.18.3/bin/linux/amd64/kubectl
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 41.9M 100 41.9M 0 0 565k 0 0:01:15 0:01:15 --:--:-- 558k
[yeqiang@localhost Downloads]$ sudo cp kubectl /usr/local/bin/
[sudo] password for yeqiang:
[yeqiang@localhost Downloads]$ sudo chmod +x /usr/local/bin/kubectl
[yeqiang@localhost Downloads]$ 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"}
测试kubectl
[yeqiang@localhost ~]$ kubectl get po -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-66bff467f8-4zr6j 1/1 Running 0 38m
kube-system coredns-66bff467f8-sdcbs 1/1 Running 0 38m
kube-system etcd-minikube 1/1 Running 0 38m
kube-system kube-apiserver-minikube 1/1 Running 0 38m
kube-system kube-controller-manager-minikube 1/1 Running 0 38m
kube-system kube-proxy-zstfz 1/1 Running 0 38m
kube-system kube-scheduler-minikube 1/1 Running 0 38m
kube-system storage-provisioner 1/1 Running 0 38m
查看minikube运行进程,可以看到是由virutalbox启动起来的
[yeqiang@localhost ~]$ ps aux | grep minikube
yeqiang 62361 35.0 0.3 5061524 99356 ? Sl 11:34 15:58 /usr/lib/virtualbox/VBoxHeadless --comment minikube --startvm c16747b7-092d-4e90-bcd4-c0faf71515a9 --vrde config
启动kubernetes dashboard
[yeqiang@localhost ~]$ minikube dashboard
🔌 Enabling dashboard ...
🤔 Verifying dashboard health ...
🚀 Launching proxy ...
🤔 Verifying proxy health ...
🎉 Opening http://127.0.0.1:43217/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ in your default browser...
Fontconfig warning: "/usr/share/fontconfig/conf.avail/05-reset-dirs-sample.conf", line 6: unknown element "reset-dirs"
Opening in existing browser session.
会自动打开默认浏览器,如图
创建一个发布
[yeqiang@localhost minikube]$ kubectl create deployment hello-minikube --image k8s.gcr.io/echoserver:1.4
deployment.apps/hello-minikube created
此时可以看到dashboard里面的状态
由于墙的存在,导致无法访问到https://k8s.gcr.io
删掉它!
[yeqiang@localhost minikube]$ kubectl delete deployments.apps hello-minikube
deployment.apps "hello-minikube" deleted
利用aliyun镜像加速地址,部署一个nginx服务
kubectl create deployment nginx --image r6w9c7qa.mirror.aliyuncs.com/library/nginx:latest
进入pod,查看http 80端口
k8s暴露服务
[yeqiang@localhost minikube]$ kubectl expose deployment nginx --type=LoadBalancer --port=80
service/nginx exposed
开启minikube 管道(注意在新窗口打开,此指令会卡住终端,不断输出信息)
[yeqiang@localhost minikube]$ minikube tunnel
[sudo] password for yeqiang:
Status:
machine: minikube
pid: 105081
route: 10.96.0.0/12 -> 192.168.99.100
minikube: Running
services: [nginx]
errors:
minikube: no errors
router: no errors
loadbalancer emulator: no errors
查看服务地址
[yeqiang@localhost minikube]$ kubectl get services nginx
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nginx LoadBalancer 10.100.49.217 10.100.49.217 80:31178/TCP 5m52s
得到EXTERNAL-IP地址为:10.100.49.217
测试访问
[yeqiang@localhost minikube]$ curl 10.100.49.217
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
开启2个副本
[yeqiang@localhost minikube]$ kubectl scale deployment --replicas=2 nginx
deployment.apps/nginx scaled