个人操作笔记,仅供参考
最近由于在家闲的慌,就找点事做,准备学习一下 K8S。K8S 这种运维技术最重要的就是实验环境,官方也推荐使用 minikube 搭建 K8S 的实验环境,但是由于国内网络环境的原因,安装官方指南肯定是不能一步到位的,这篇文章就是考虑了国内的网络环境使用各种国内加速站点力求一步到位成功安装 minikube。安装成功后会使用 minikube 创建一个 vm-driver=none 的集群并运行 echoserver 服务进行测试。
在这里做出的保证是使用干净的 Debian 9 ( Debian 9.11 dvd1 ISO 下载链接 ) 虚拟机按步骤执行到最后一步是可以看到测试结果的。
这部分会结合国内的网络环境下载和安装必要的组件
安装 kubectl 将使用阿里云的镜像进行加速
先检查是否有单独的 /etc/apt/sources.list.d/kubernetes.list
文件,没有的话先手动创建一个
touch /etc/apt/sources.list.d/kubernetes.list
然后执行下列命令安装 kubectl
apt-get update && apt-get install -y apt-transport-https curl
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
apt-get update
apt-get install -y kubectl=1.17.0-00 kubeadm=1.17.0-00 kubelet=1.17.0-00
下面提供三个下载地址供下载,其中第三个是我搬运到 CSDN 下载站的,前两个网络环境不好的话会下载得比较慢。
下载完对应的资源后执行下面的命令完成 minikube 的安装
dpkg -i minikube_1.6.2.deb
由于 Kubernetes 1.17.0 只适配到 Docker 18.09 所以安装的时候需要指定 Docker 18.09 的版本
# step 1: 安装必要的一些系统工具
apt-get update
apt-get -y install apt-transport-https ca-certificates curl software-properties-common
# step 2: 安装GPG证书
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | apt-key add -
# Step 3: 写入软件源信息
add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/debian $(lsb_release -cs) stable"
# Step 4: 更新并安装Docker-CE
apt-get -y update
apt-get -y install docker-ce=5:18.09.9~3-0~debian-stretch
在 minikube 启动一个集群的时候需要使用 k8s.gcr.io 站点下的一些镜像,很不幸,这个站点国内并不能顺畅访问,可以借助 azure 提供的加速来进行拉取后再重新给镜像打 tag
需要的镜像如下:
使用下面命令从 azure 站点拉取镜像
docker pull gcr.azk8s.cn/google-containers/kube-controller-manager:v1.17.0
docker pull gcr.azk8s.cn/google-containers/kube-scheduler:v1.17.0
docker pull gcr.azk8s.cn/google-containers/kube-apiserver:v1.17.0
docker pull gcr.azk8s.cn/google-containers/kube-proxy:v1.17.0
docker pull gcr.azk8s.cn/google-containers/pause:3.1
docker pull gcr.azk8s.cn/google-containers/etcd:3.4.3-0
docker pull gcr.azk8s.cn/google-containers/coredns:1.6.5
然后使用下面命令重新给刚拉取的镜像打标签
docker tag gcr.azk8s.cn/google-containers/kube-controller-manager:v1.17.0 k8s.gcr.io/kube-controller-manager:v1.17.0
docker tag gcr.azk8s.cn/google-containers/kube-scheduler:v1.17.0 k8s.gcr.io/kube-scheduler:v1.17.0
docker tag gcr.azk8s.cn/google-containers/kube-apiserver:v1.17.0 k8s.gcr.io/kube-apiserver:v1.17.0
docker tag gcr.azk8s.cn/google-containers/kube-proxy:v1.17.0 k8s.gcr.io/kube-proxy:v1.17.0
docker tag gcr.azk8s.cn/google-containers/pause:3.1 k8s.gcr.io/pause:3.1
docker tag gcr.azk8s.cn/google-containers/etcd:3.4.3-0 k8s.gcr.io/etcd:3.4.3-0
docker tag gcr.azk8s.cn/google-containers/coredns:1.6.5 k8s.gcr.io/coredns:1.6.5
这里会用 bare-metal 的形式启动一个集群,使用命令如下
minikube start --vm-driver=none
如下图所示,出现 Done! kubectl is now configured use "minikube"
则表明安装成功。
可以使用下面命令将默认的集群模式改为 none
minikube config set vm-driver none
然后使用下面命令查看 minikube 的状态
minikube status
接下来这部分会使用 echoserver 创建一个基本的服务验证 minikube 已经部署完成并能正常使用。
依次执行下列命令完成服务的部署:
kubectl create deployment hello-minikube --image=k8s.gcr.io/echoserver:1.4
kubectl expose deployment hello-minikube --type=NodePort --port=8080
minikube service hello-minikube
执行完之后会显示具体映射的端口
如果不是使用 root 用户启动的话会自动打开浏览器,如果打开浏览器失败,就使用 curl 命令请求途中的 URL 验证服务正常运行
curl http://10.0.2.15:30769
请求成功的话能正确返回信息
如果不手动拉取镜像在国内的网络环境下,在执行 minikube start
时会出现下面的错误
就是因为从 k8s.gcr.io 国内不能访问,所以需要手动从其他地方拉取镜像再命名为 k8s.gcr.io 的镜像。
[1] minikube Getting Start
[2] minikube Examples
[3] minikube 所需镜像拉取失败解决方法
[4] aliyun Docker CE 镜像使用方法
[5] aliyun Kubernetes 镜像使用方法