通过docker构建K8s

前言:

提到微服务,就不得不聊聊SpringCloud 和 Kubernetes ,两者都能为微服务提供完整的落地解决方案,两者的社区也相当活跃,对于Spring Cloud来说,可以称之为开发框架,对于K8s来说,可以称之为运维平台,两者的定位其实是有一定的差异的;到现在,容器化技术普及应用,容器的编排和管理是一件非常重要且和开发团队息息相关的事情,且在云原生越来越火的当下,了解和深入学习K8s都是非常有必要的。

通过docker构建K8s_第1张图片

本文将以最为简单的方式,在docker-desktop环境下搭建k8s环境

搭建步骤

  1. 安装 Docker Desktop
  2. 步骤2:下载 Kubernetes 镜像并启动运行
  3. 下载 kubectl 工具
  4. 启用 Dashboard(可选)
1、安装 Docker Desktop

通过docker构建K8s_第2张图片
这里贴出dockerDesktop官网
通过docker构建K8s_第3张图片
下载就通过自己的OS以及搭载的芯片选择对应的版本进行下载就好,也可以访问 Docker Hub,找到社区版 Docker CE,并根据自己的操作系统选择对应的产品。
通过docker构建K8s_第4张图片

2、下载 Kubernetes 镜像并启动运行

想要把kubernetes启动起来,需要先下载k8s组件的镜像,犹豫某一些原因,下载国外官网的镜像肯定会比较慢(有高速梯子的当我没说),所以我们这里直接使用aliyun提供的k8s-deploy

对于不同操作系统:

1、macos:

将下列脚本拷贝,然后去新建一个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  

通过docker构建K8s_第5张图片
可以看到通过提权,我们得到了一个可执行文件,执行:

./create_k8s_command.sh

等待下载相关k8s组件,下载完成后,会展示以下(因为脚本末尾执行了一下docker images):
通过docker构建K8s_第6张图片

2、windows:

先在文件夹内创建一个镜像配置文件: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_第7张图片
等待docker重启,k8s会自动启动。

3、下载kubectl工具

根据自己电脑的OS,下载对应版本的kubectl,下载完成后,解压提权,并且移动到系统特定目录下(或者配环境变量都行):

  • macOS( /usr/local/bin):
$ tar zxvf kubernetes-client-darwin-amd64.tar.gz
$ cd ./kubernetes/client/bin
$ chmod +x kubectl && mv kubectl /usr/local/bin/kubectl
  • windows
    下载后解压 kubectl.exe 文件到 C:\Windows\System32 目录下。

执行kubectl version 查看版本:
在这里插入图片描述

4、启用k8s Dashboard(可视化,可有可无,选配)
  • 通过docker下载镜像:
docker pull kubernetesui/dashboard:v2.4.0
docker pull kubernetesui/metrics-scraper:v1.0.7
  • 启动dashboard需要在集群内部署recommended.yaml
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.4.0/aio/deploy/recommended.yaml

通过docker构建K8s_第8张图片

  • 部署成功后,启动K8s Api-server 访问代理
kubectl proxy
Starting to serve on 127.0.0.1:8001
  • 打开浏览器访问一下链接
    http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/
    通过docker构建K8s_第9张图片

  • 选择token,并且配置访问Token

    • macOS:
    TOKEN=$(kubectl -n kube-system describe secret default| awk '$1=="token:"{print $2}')
    kubectl config set-credentials docker-desktop --token="${TOKEN}"
    echo $TOKEN
    
    • windows:
    $TOKEN=((kubectl -n kube-system describe secret default | Select-String "token:") -split " +")[1]
    kubectl config set-credentials docker-desktop --token="${TOKEN}"
    echo $TOKEN
    
  • 复制token登陆即可

通过docker构建K8s_第10张图片

  • 忘记token可以通过找到配置文件查看

    • macOS
    $HOME/.kube/config
    
    • windows
    %UserProfile%\.kube\config
    
  • 末尾就是token

结语

后续会更新在k8s下的服务发现和CI/CD相关的运维开发教程

  • 参考:
    • https://www.jianshu.com/p/e5c056baa8ab
    • https://kubernetes.io/zh/docs/reference/kubectl/overview/

你可能感兴趣的:(k8s,k8s)