文|MESeraph
01 | 关闭secure boot
进入BIOS关闭secure boot。(为了VM能正常启动)
02 | 安装
安装kubectl
curl -Lo kubectl https://storage.googleapis.com/kubernetes-release/release/v1.8.0/bin/linux/amd64/kubectl && chmod +x kubectl && sudo mv kubectl /usr/local/bin/
安装virtualbox(minikube 默认依赖虚拟机启动,如果不安装虚拟机则启动minikube时需要添加 --vm-driver=none参数)
sudo apt install virtualbox
安装minikube
curl -Lo minikube https://storage.googleapis.com/minikube/releases/v0.23.0/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/
03 | 启动
启动minikube
sudo minikube start
#或
sudo minikube start --vm-driver=none
04 | 为kubectl别名和命令行补全
1 创建别名
在 ~/.bashrc添加
alias k=kubectl
再执行 source ~/.bashrc
2 配置tab补全(需要安装bashcompletion)
source <(kubectl completion bash )
source <(kubectl completion bash | sed s/kubectl/k/g)
04 | 运行应用
启动 nginx容器
sudo kubectl run kube-nginx999 --image=nginx:latest --port=80
#默认是创建deployment,添加参数--generator=run/v1则创建ReplicationController。
一开始可能会一直处于containerCreating,很多情况下是pull镜像失败导致(由于被墙)。
用sudo minikube logs
查询日志详情,按问题3的解决方式,pull镜像。
发布服务
sudo kubectl expose deployment kube-nginx999 --type=NodePort --name kube-http
# 如果是ReplicationController,则将deployment改为rc
这里使用的NodePort模式,还有一种LoadBalancer模型(但Minikube不支持)
使用sudo minikube service kube-http --url
获取访问服务的ip和端口。
增加期望的副本数量
sudo kubectl scale rc kubia --replicas=3
05 | 常用命令
kubectl
命令 | 解释 |
---|---|
kubectl cluster-info | 查询集群信息 |
kubectl get nodes | 查询集群节点 |
kubectl describe node 节点名 | 查询指定节点详细信息 |
kubectl get pods | 获取pod信息 |
kubectl delete pod 名称 | 删除pod |
kubectl get pods -0 wide | 获取pod信息(包含具体运行节点信息) |
kubectl delete deployment 名称 | 删除deployment |
kubectl get services/svc | 列出服务 |
minikube
命令 | 解释 |
---|---|
sudo minikube logs | 查看日志信息 |
sudo minikube stop | 停止minikube |
sudo minikube start [–vm-driver=none] | 启动minikube |
sudo minikube service 服务名 --url | 查询服务ip和端口 |
sudo minikube ssh | 登入虚拟机 |
99 | 问题
- 出现如下错误提示:
Starting local Kubernetes v1.8.0 cluster...
Starting VM...
Getting VM IP address...
Moving files into cluster...
E1211 14:06:27.325706 4907 start.go:222] Error updating cluster: Error updating localkube from uri: Error attempting to download and cache localkube: Error getting localkube download url: Error getting valid localkube versions: Error getting the localkube versions: Error getting json via http with url: https://storage.googleapis.com/minikube/k8s_releases.json: Error getting json from url: https://storage.googleapis.com/minikube/k8s_releases.json via http: Get https://storage.googleapis.com/minikube/k8s_releases.json: read tcp 192.168.1.134:51656->172.217.24.16:443: read: connection reset by peer
E1211 14:06:57.329610 4907 util.go:147] Error uploading error message: : Post https://clouderrorreporting.googleapis.com/v1beta1/projects/k8s-minikube/events:report?key=AIzaSyACUwzG0dEPcl-eOgpDKnyKoUFgHdfoFuA: dial tcp 172.217.160.74:443: i/o timeout
解决:重试几次就可以了。。。
- sudo minikube start 出现:
Starting local Kubernetes v1.8.0 cluster...
Starting VM...
E1211 15:56:31.318078 10120 start.go:150] Error starting host: Error getting state for host: machine does not exist.
Retrying.
E1211 15:56:31.319951 10120 start.go:156] Error starting host: Error getting state for host: machine does not exist
E1211 15:57:01.320826 10120 util.go:147] Error uploading error message: : Post https://clouderrorreporting.googleapis.com/v1beta1/projects/k8s-minikube/events:report?key=AIzaSyACUwzG0dEPcl-eOgpDKnyKoUFgHdfoFuA: dial tcp 172.217.24.10:443: i/o timeout
解决:执行rm -rf ~/.minikube/machines
,然后重启minikube。
- 启动镜像时,使用
sudo minikube logs
显示如下:
Jan 05 03:52:58 minikube localkube[3624]: E0105 03:52:58.952990 3624 kuberuntime_manager.go:632] createPodSandbox for pod "nginx666-864b85987c-kvdpb_default(b0cc687d-f1cb-11e7-ba05-080027e170dd)" failed: rpc error: code = Unknown desc = failed pulling image "gcr.io/google_containers/pause-amd64:3.0": Error response from daemon: Get https://gcr.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
解决:执行如下命令,再重启服务。
minikube ssh
docker pull registry.cn-hangzhou.aliyuncs.com/google-containers/pause-amd64:3.0
docker tag registry.cn-hangzhou.aliyuncs.com/google-containers/pause-amd64:3.0 gcr.io/google_containers/pause-amd64:3.0
docker pull registry.cn-hangzhou.aliyuncs.com/google-containers/kubernetes-dashboard-amd64:v1.7.0
docker tag registry.cn-hangzhou.aliyuncs.com/google-containers/kubernetes-dashboard-amd64:v1.7.0 gcr.io/google_containers/kubernetes-dashboard-amd64:v1.7.0
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-addon-manager:v6.4-beta.2
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-addon-manager:v6.4-beta.2 gcr.io/google-containers/kube-addon-manager:v6.4-beta.2
docker pull registry.cn-shenzhen.aliyuncs.com/gcrio/k8s-dns-kube-dns-amd64:latest
docker tag registry.cn-shenzhen.aliyuncs.com/gcrio/k8s-dns-kube-dns-amd64:latest gcr.io/google_containers/k8s-dns-kube-dns-amd64:1.14.5
docker pull registry.cn-hangzhou.aliyuncs.com/google-containers/k8s-dns-dnsmasq-nanny-amd64:1.14.5
docker tag registry.cn-hangzhou.aliyuncs.com/google-containers/k8s-dns-dnsmasq-nanny-amd64:1.14.5 gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64:1.14.5
docker pull registry.cn-hangzhou.aliyuncs.com/google-containers/k8s-dns-sidecar-amd64:1.14.5
docker tag registry.cn-hangzhou.aliyuncs.com/google-containers/k8s-dns-sidecar-amd64:1.14.5 gcr.io/google_containers/k8s-dns-sidecar-amd64:1.14.5
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/storage-provisioner:v1.8.1
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/storage-provisioner:v1.8.1 gcr.io/k8s-minikube/storage-provisioner:v1.8.1
exit