前言

随着云原生的普及,传统的fat微服务方式已经不符合日常的运营需求了,比如:业务写点业务代码,还需要配合架构升级测试验证,对业务本身是极大的影响。ServerLess应运而生,实际上就是把非业务能力剥离出来,独立运营。而现在大部分实现都依赖于容器,容器的管理主流技术是kubernetes即k8s。

安装docker desktop

开发平台可以直接安装docker desktop,服务器建议安装docker ce。

 笔者的版本

安装kubernetes

 使用docker desktop 安装单节点的集群kubernetes,点击apply & restart

笔者测试高版本的docker安装kubernetes失败,一直是starting,低版本可以成功安装。 

这样安装,好处是一键安装,实际上云服务就是这种模式,浏览器一键申请容器,就是把很多操作封装起来,也可以使用命令一步步按照官网操作,中间会躺很多坑。

 可以看到k8s是以容器方式运行的,见名知意,etcd、apiserver、controller-manager、scheduler等。

安装dashboard

见官方文档Deploy and Access the Kubernetes Dashboard | Kubernetes,实际上不安装dashboard也是可以直接使用的,有dashboard方便操作。

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.0/aio/deploy/recommended.yaml

当然也可以修改yaml,配置端口,X509证书等 

安装dashboard,kubectl apply xxx.yaml,典型的k8s调度安装

kubectl proxy

 然后访问:

http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/

需要配置token登录 

 访问Authenticating | Kubernetes

 

根据github也可以

https://github.com/kubernetes/dashboard/blob/master/docs/user/access-control/creating-sample-user.md

这里以github为例,实际上就是一个执行指令,一个依赖yaml方式执行指令,本质一样

apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kubernetes-dashboard

执行yaml,创建账户 

 创建角色

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: kubernetes-dashboard

执行yaml

创建token

kubectl -n kubernetes-dashboard create token admin-user

就可以拿到token登录,就可以使用图形界面创建pod等

minikube

minikube安装坑特别多,特别是镜像不能下载和权限问题,以ubuntu 22.04LTS为例

首先docker安装

就按照官方安装就行了,注意官方源有问题,切换国内源即可。

然后安装kubectl

按照官方教程即可在 Linux 系统中安装并设置 kubectl | Kubernetes

chmod +x kubectl && sudo mv kubectl /usr/local/bin/kubectl

安装后移动到环境变量目录,就可以直接执行命令

再次下载安装minikube

下载:curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64

mv minikube-linux-amd64 minikube
chmod +x minikube && sudo mv minikube /usr/local/bin/

关键来了minikube start,要求

1. 不能使用root

2. 需要使用国内源

3. 根据实际情况执行命令

Suggestion: Add your user to the 'docker' group: 'sudo usermod -aG docker $USER && newgrp docker'

比如上面的情况,就执行上面的命令

X Exiting due to GUEST_SSH_CERT_NOT_FOUND: Failed to start host: provision: Error getting config for native Go SSH: open /home/huahua/.minikube/machines/minikube/id_rsa: no such file or directory
* Suggestion: minikube is missing files relating to your guest environment. This can be fixed by running 'minikube delete'
* Related issue: https://github.com/kubernetes/minikube/issues/9130

huahua@huahua:~$ minikube delete
* Deleting "minikube" in docker ...
* Deleting container "minikube" ...
* Removing /home/huahua/.minikube/machines/minikube ...
* Removed all traces of the "minikube" cluster.

笔者实验

minikube start --driver=docker --container-runtime=containerd --image-mirror-country=cn --force

 可以成功,反正就是不断尝试

 看看实际效果

 

总结

k8s的架构实际上不是很复杂,关键还是在于管理和网络,安装的坑大概率是这些docker镜像下载不了,实际上还有其他容器替代,比如podman,因为k8s支持的接口是固定的,理论上还可以支持其他容器。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐