提到微服务,就不得不聊聊SpringCloud 和 Kubernetes ,两者都能为微服务提供完整的落地解决方案,两者的社区也相当活跃,对于Spring Cloud来说,可以称之为开发框架,对于K8s来说,可以称之为运维平台,两者的定位其实是有一定的差异的;到现在,容器化技术普及应用,容器的编排和管理是一件非常重要且和开发团队息息相关的事情,且在云原生越来越火的当下,了解和深入学习K8s都是非常有必要的。
本文将以最为简单的方式,在docker-desktop环境下搭建k8s环境
这里贴出dockerDesktop官网
下载就通过自己的OS以及搭载的芯片选择对应的版本进行下载就好,也可以访问 Docker Hub,找到社区版 Docker CE,并根据自己的操作系统选择对应的产品。
想要把kubernetes启动起来,需要先下载k8s组件的镜像,犹豫某一些原因,下载国外官网的镜像肯定会比较慢(有高速梯子的当我没说),所以我们这里直接使用aliyun提供的k8s-deploy
,
对于不同操作系统:
将下列脚本拷贝,然后去新建一个sh脚本文件,比如:
vim create_k8s_command.sh
#拷贝下方代码内容
#!/bin/bash
set -e
KUBE_VERSION=v1.21.5
KUBE_PAUSE_VERSION=3.4.1
ETCD_VERSION=3.4.13-0
COREDNS_VERSION=v1.8.0
GCR_URL=k8s.gcr.io
ALIYUN_URL=registry.cn-hangzhou.aliyuncs.com/google_containers
# get images
images=(kube-proxy:${KUBE_VERSION}
kube-scheduler:${KUBE_VERSION}
kube-controller-manager:${KUBE_VERSION}
kube-apiserver:${KUBE_VERSION}
pause:${KUBE_PAUSE_VERSION}
etcd:${ETCD_VERSION}
coredns:${COREDNS_VERSION})
for imageName in ${images[@]} ; do
docker pull $ALIYUN_URL/$imageName
docker tag $ALIYUN_URL/$imageName $GCR_URL/$imageName
docker rmi $ALIYUN_URL/$imageName
done
docker tag $GCR_URL/coredns:$COREDNS_VERSION $GCR_URL/coredns/coredns:$COREDNS_VERSION
# show images
docker images
:wq保存退出
此时,你的当前目录下,会多出一个文件叫做create_k8s_command.sh
,现在犹豫权限不够,他不能直接被执行,需要先提权限,这里为了方便展示,我直接提到777:
chmod 777 create_k8s_command.sh
./create_k8s_command.sh
等待下载相关k8s组件,下载完成后,会展示以下(因为脚本末尾执行了一下docker images):
先在文件夹内创建一个镜像配置文件:images.properties:
k8s.gcr.io/pause:3.4.1=registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.4.1
k8s.gcr.io/kube-controller-manager:v1.21.5=registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.21.5
k8s.gcr.io/kube-scheduler:v1.21.5=registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.21.5
k8s.gcr.io/kube-proxy:v1.21.5=registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.21.5
k8s.gcr.io/kube-apiserver:v1.21.5=registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.21.5
k8s.gcr.io/etcd:3.4.13-0=registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.13-0
k8s.gcr.io/coredns:v1.8.0=registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:v1.8.0
k8s.gcr.io/coredns/coredns:v1.8.0=registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:v1.8.0
然后在当前目录下再创建一个自动化脚本create-k8s-command.ps1
帮助你去拉镜像:
foreach($line in Get-Content .\images.properties) {
$data = $line.Split('=')
$key = $data[0];
$value = $data[1];
Write-Output "$key=$value"
docker pull ${value}
docker tag ${value} ${key}
docker rmi ${value}
}
执行:
./create-k8s-command.ps1
如果告知因为安全策略无法执行,请用管理员方式运行cmd执行:
Set-ExecutionPolicy RemoteSigned
下载完成后,需要去Docker-Desktop上开启k8s:
等待docker重启,k8s会自动启动。
根据自己电脑的OS,下载对应版本的kubectl,下载完成后,解压提权,并且移动到系统特定目录下(或者配环境变量都行):
$ tar zxvf kubernetes-client-darwin-amd64.tar.gz
$ cd ./kubernetes/client/bin
$ chmod +x kubectl && mv kubectl /usr/local/bin/kubectl
docker pull kubernetesui/dashboard:v2.4.0
docker pull kubernetesui/metrics-scraper:v1.0.7
recommended.yaml
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.4.0/aio/deploy/recommended.yaml
kubectl proxy
Starting to serve on 127.0.0.1:8001
打开浏览器访问一下链接
http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/
选择token,并且配置访问Token
TOKEN=$(kubectl -n kube-system describe secret default| awk '$1=="token:"{print $2}')
kubectl config set-credentials docker-desktop --token="${TOKEN}"
echo $TOKEN
$TOKEN=((kubectl -n kube-system describe secret default | Select-String "token:") -split " +")[1]
kubectl config set-credentials docker-desktop --token="${TOKEN}"
echo $TOKEN
复制token登陆即可
忘记token可以通过找到配置文件查看
$HOME/.kube/config
%UserProfile%\.kube\config
末尾就是token
后续会更新在k8s下的服务发现和CI/CD相关的运维开发教程