29

Docker & k8s 系列二:本机k8s环境搭建

 3 years ago
source link: http://www.cnblogs.com/demingblog/p/12905563.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

本篇将会讲解k8s是什么?本机k8s环境搭建,部署一个pod并演示几个kubectl命令,k8s dashboard安装。

k8s是什么

k8s是kubernetes的简写, 它是一个全新的基于容器技术的分布式架构领先方案 。它是谷歌内部使用的大规模集群管理系统Borg的一个开源版本。这个项目在谷歌内部使用多年,由于员工签署了保密协议,所以外界对这个项目一无所知。直到kubernetes的开源一鸣惊人,大家才得以了解。Kubernetes是一个开放的开发平台,并不限制特定的编程语言,任何语言编写的服务都可以被映射为Kubernetes的Service(服务),并通过标准的TCP通信协议进行交互。你在处理分布式系统所需要用到的能力,在kubernetes中都支持,比如服务发现、故障发现和自我修复、滚动升级、扩容等。总之,Kubernetes是一个分布式解决方案、是一个一站式的完备的分布式系统开发和支撑平台。k8s+docker使得小规模团队甚至是个人hold住大型项目成为可能。

本机k8s环境搭建

如果之前没有接触过k8s的话,也许听完上面的解释,并不是很清楚。而在软件技术的学习中,实操十分重要,搭建好环境,实际操作几次就不会觉得那么陌生了。在本机搭建k8s环境,我们有两种方式:

  1. k8s for docker desktop
  2. Minikube

本例将使用第一种方式,在mac电脑上搭建k8s环境。这种方式相对简单,可以快速的搭建起来实验看看效果。以Mac为例,当我们按照上一篇文章的步骤配置好了docker环境之后,点击docker小图标,打开菜单,找到“Preferences..”,在弹出的配窗口中,可以看到Kubernetes,界面如下:

nIFbI3U.png!web

当我们安装好docker desktop for mac/windows之后,默认情况下,“Enable kubernetes” 是没勾选的。我们需要先进行下面的操作,然后过来勾选这个以启动k8s。

给docker daemon配置阿里云镜像加速器

为了使得下载某些镜像更快,我们需要配置一下镜像加速器。为了使用阿里云的镜像加速器,你需要先注册一个阿里云账号(进入aliyun.com注册即可)。登录阿里云的控制台之后,进入“ 容器镜像服务 ”,在左侧的菜单中展开“镜像中心”,点击“镜像加速器”,可以看到你的专属镜像加速器地址,大概是这样子:

https://xxxxx.mirror.aliyuncs.com

如果你注册阿里云账号还真,找不到这个页面,可以直接从这个链接进入:

https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

得到加速器地址之后,把他配置到docker里边去,docker->Preferences->Daemon->Registry Mirrods 点加号,贴入地址,重启之后就生效了。

在Docker Desktop开启k8s

这个过程完全参考阿里云的一个仓库: https://github.com/AliyunContainerService/k8s-for-docker-desktop

首先clone一下这个仓库:

git clone https://github.com/AliyunContainerService/k8s-for-docker-desktop.git

clone好仓库之后,进入可以看到里边有一个文件:load_images.sh。我们先保持在这个目录,一回儿需要执行这个脚本

但是执行之前,需要在About Docker中查看kubernetes的版本,我的版本是:

Kubernetes: v1.14.8

可以看到是 v1.14.8 下面我们来切换一下上面所clone的代码的分支:

git checkout v1.14.8

OK,下面可以执行脚本了 ./load_images.sh 这个脚本执行过程中,将会从阿里云下载Kubernetes 所需要的镜像,这个过程大概需要两三分钟。这个命令执行完了之后,我们就可以开启k8s了。Docker - > Preference -> kubernetes -> 勾选Enable kubernetes, apply and restart 。等待几分钟之后,我们点开docker小图标,可以看到:

docker is running
Kubernetes is runing

使用Kubectl连接k8s

上面我们已经配置好了k8s环境,下面我们来验证一下。kuberctl是一个命令行工具,在配置好k8s环境之后,这个命令就有了。我们输入: kubectl cluster-info

$ kubectl cluster-info                                               
Kubernetes master is running at https://kubernetes.docker.internal:6443
KubeDNS is running at https://kubernetes.docker.internal:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

可以看到 kubernetes master is running, KubeDNS is running。说启动正常,再看一个命令: kubectl get nodes

$ kubectl get nodes   
NAME             STATUS   ROLES    AGE   VERSION
docker-desktop   Ready    master   32d   v1.14.8

再看一个命令: kubectl get pods

$ kubectl get pods 
NAME            READY   STATUS    RESTARTS   AGE
my-first-demo   1/1     Running   2          6d1h

可以看到我部署了一个 my-first-demo 应用正在运行。下一篇将会讲解如何部署应用到k8s。

配置Kubernetes 控制台

如果我们想更直观的看kubernetes内的应用情况,我们可以部署Kubernetes控制台,即Kubernetes dashboard。还记得上面步骤中中clone的仓库吧(k8s-for-docker-desktop.git)。我们再次进入这个目录

cd your/path/to/k8s-for-docker-desktop

这个目录中有一个 kubernetes-dashboard.yaml 文件(注意看下分支,需要是你本机k8s的版本,例如v1.14.8)执行这个命令:

kubectl create -f kubernetes-dashboard.yaml

这个命令将会启动Kubernetes dashboard,使用这个命令查看启动状况:

$ kubectl get pod -n kube-system         
NAME                                     READY   STATUS    RESTARTS   AGE
etcd-docker-desktop                      1/1     Running   4          32d
kubernetes-dashboard-5d9599dc98-g6czk    1/1     Running   7          32d

可以看到下面有个 kubernetes-dashboard-5d9599dc98-g6czk ,说明k8s控制台的pod启动成功。下面执行如下命令:

$ kubectl proxy
Starting to serve on 127.0.0.1:8001

然后再浏览器访问:

http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!/login

打开之后,可以看到一个登陆界面:

maMRZzZ.png!web

我们选择“令牌”方式登陆,这里需要令牌,获得令牌需要在命令行输入如下命令:

TOKEN=$(kubectl -n kube-system describe secret default| awk '$1=="token:"{print $2}')
kubectl config set-credentials docker-for-desktop --token="${TOKEN}"
echo $TOKEN

这串命令比较长,复制完整,粘贴执行即可。会得到一长串的字符串,复制贴到面板的令牌输入框点击登陆。你将会看到一个这样的界面:

Jn6juy3.png!web

界面中,我们可以看到负载状态,容器组信息等。操作过阿里云k8s环境的同学肯定不陌生,阿里云的容器dashboard就是这个,只是颜色不一样而已。

总结

至此,本文简单介绍了一下k8s是什么,并我们配置好了本机的k8s环境,并演示了几个 kubectl 命令以查看k8s运行情况。至此,准备工作算是做完了。下一篇将讲如何部署应用到k8s。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK