K8S系列-microk8s安装使用教程

5,421 阅读4分钟

microk8s可以理解为单机版的k8s,能够实现快速部署快速上手。

microk8s的部署基本上可以分为四大部分

  • 打包应用:将spring项目打包成docker镜像进行打包发布到虚拟机docker中
  • push应用:将docker镜像push到docker hub云端
  • 部署应用:利用k8s中的deployment集合之前的docker image进行部署成实际的pod
  • 发布服务:利用k8s中的service将deployment包装暴露提供给外界服务

本文将从环境准备开始一步一步将spring 项目实际部署到microk8s当中对外提供服务。

环境准备

安装虚拟机

此处选择安装Vmware最新版,然后破解码进行破解

安装镜像

安装Ubuntu的镜像

官网下载最新的iso镜像即可

docker

安装docker

blog.csdn.net/jinking01/a…

#由于apt官方库里的docker版本可能比较旧,所以先卸载可能存在的旧版本:
$ sudo apt-get remove docker docker-engine docker-ce docker.io


#更新apt包索引:
sudo apt-get update

#安装以下包以使apt可以通过HTTPS使用存储库(repository):
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common

#添加Docker官方的GPG密钥:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

#使用下面的命令来设置stable存储库:
 sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
 
#再更新一下apt包索引:
 sudo apt-get update
 
#安装最新版本的Docker CE:
 sudo apt-get install -y docker-ce
 
#查看docker服务是否启动:
 systemctl status docker

配置docker国内镜像镜像

vim /etc/docker/daemon.json

{ 
"registry-mirrors": ["https://registry.docker-cn.com"] 
}

重启docker

systemctl daemon-reload systemctl restart docker

blog.csdn.net/qq_39940205…

有时候这个镜像地址会有问题

可以更换其他镜像地址

blog.csdn.net/qq_19734597…

https://registry.docker-cn.com

http://hub-mirror.c.163.com

https://3laho3y3.mirror.aliyuncs.com

http://f1361db2.m.daocloud.io

https://mirror.ccs.tencentyun.com

开启docker远程访问

xinchen.blog.csdn.net/article/det…

idea中远程连接docker

idea中首先安装docker插件

在setting里找到这个插件,安装上去

这里写图片描述
成功安装插件

这里写图片描述
点击+,新增一个docker服务器连接

出现如下字样则表示连接成功

安装MicroK8s

 #sudo snap install microk8s --classic
 
 
 #配置 microk8s命令
 #echo "export PATH=$PATH:/snap/bin" >> ~/.bashrc #永久写入
 
 #设置kubectl别名
 #snap alias microk8s.kubectl kubectl 
 

pod的sandbox 默认是 k8s.gcr.io/pause:3.1,这个镜像是无法获取的。需要将sandbox修改为国内可以获取的镜像。

修改/var/snap/microk8s/current/args/kubelet。 添加--pod-infra-container-image=s7799653/pause:3.1 修改/var/snap/microk8s/current/args/containerd-template.toml的plugins -> plugins.cri -> sandbox_image为s7799653/pause:3.1

#重启服务
#microk8s.stop
#microk8s.start

#启动dns和dashboard
#microk8s.enable dns dashboard

可以结合文末的安装教程列表综合参考

至此安装完成

idea项目规划

项目结构如下所示

打包应用

blog.csdn.net/boling_cava…

dockerfile文件内容

FROM openjdk:8u201-jdk-alpine3.9
#作者
MAINTAINER Lucas <1181370590@qq.com>
#系统编码
ENV LANG=C.UTF-8 LC_ALL=C.UTF-8

RUN mkdir -p /usr/local
#应用构建成功后的jar文件被复制到镜像内,名字也改成了app.jar
ADD target/springboot-k8s-demo-0.0.1-SNAPSHOT.jar /usr/local/app.jar

# 运行容器后执行的第一条命令
ENTRYPOINT ["java","-jar","/usr/local/app.jar"]
#暴露8080端口
EXPOSE 8080

idea设置

编辑设置

添加docker设置

选择DockerFile,然后点击绿色箭头Run

成功之后就能看到部署成功的字样

虚拟机中也能看到所部署的镜像

Push应用

首先修改image的名字让image的名字符合如下规范

docker tag 镜像名称 dockerhub用户名/镜像名称

docker push dockerhub用户名/镜像名称

push 成功之后能够在docker hub当中查看所push的image

部署应用

编写demo-deployment.yml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: springboot-k8s-demo
  labels:
    app: springboot-k8s-demo
spec:
  replicas: 3
  selector:
    matchLabels:
      app: springboot-k8s-demo
  template:
    metadata:
      labels:
        app: springboot-k8s-demo
    spec:
      containers:
      - name: springboot-k8s-demo
        image: 1181370590/springboot-k8s-demo:latest
        ports:
        - containerPort: 8080

运行

kubectl create -f demo-deployment.yaml

发布服务

编写demo-service.yml

apiVersion: v1
kind: Service
metadata:
  name: springboot-k8s-demo
  namespace: default
  labels:
    app: springboot-k8s-demo
spec:
  type: NodePort
  ports:
  - port: 8080
    nodePort: 30090 #service对外开放端口
  selector:
    app: springboot-k8s-demo


运行

kubectl create -f demo-servicet.yaml

验证

查看pod部署情况

所有pod

#kubectl get pods

可以看到此时pod正在创建,稍等一会儿

此时创建完毕,处于running状态

具体查看某个pod

#kubectl describe pod podname

查看service服务是否正常服务

curl serviceIp:port/路径


注意点

权限问题

命令行应该首先使用root用户来进行操作,否则会出现permission deny

YAML格式问题

网上部分yaml样例格式是有错误的

可以在如下网站检验yaml格式

www.bejson.com/validators/…

查看日志

有时候部署deployment的时候会有问题

可以使用命令

kubectl logs -f podsname

来查看具体pod的日志来查看问题

参考文章

教程

www.jianshu.com/p/77e40a917…

zhuanlan.zhihu.com/p/85375349

www.jianshu.com/p/02fd2540f…

cn.ubuntu.com/blog/how-to…

blog.csdn.net/s7799653/ar…

juejin.cn/post/684490…

国外镜像解决方案

segmentfault.com/a/119000001…

blog.csdn.net/qq_24923725…

命令行全局代理(备用)

blog.csdn.net/dc2016/arti…