K8S配合 jenkins 完整一键安装

1、安装k3s K8S简易版(想安装完整版本自行搜索安装)

curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -  

2、安装好后可以执行命令查看是否安装成功 显示如下正常继续

sudo systemctl status k3s

K8S配合 jenkins 完整一键安装_第1张图片

3、安装kuboard可视化工具

① K8S命令安装

#安装
kubectl apply -f https://addons.kuboard.cn/kuboard/kuboard-v3.yaml

#卸载

kubectl delete -f https://addons.kuboard.cn/kuboard/kuboard-v3.yaml



#常用命令
#查看所有pod
kubectl get pod  -A
#查看kuboard命名空间下的pod
kubectl get pod  -n kuboard
#查看状态
kubectl describe pod kuboard-v3-d48fd7b86-wj5wg -n kuboard
#查看日志
kubectl logs kuboard-v3-d48fd7b86-wj5wg -n kuboard
#进入容器执行命令
kubectl exec -it kuboard-v3-d48fd7b86-wj5wg -n kuboard --bash
#找到node节点
kubectl get pod -o wide -n kube-system
#找到service端口
kubectl get svc -n kube-system

②kubectl命令安装不了,是否还有别的方式呢。官网还提供了几种其他方式,实测docker方式是可以安装成功的

sudo docker run -d \
  --restart=unless-stopped \
  --name=kuboard \
  -p 80:80/tcp \
  -p 10081:10081/tcp \
  -e KUBOARD_ENDPOINT="http://192.168.3.75:80" \
  -e KUBOARD_AGENT_SERVER_TCP_PORT="10081" \
  -v /root/kuboard-data:/data \
  eipwork/kuboard:v3

其中环境变量KUBOARD_ENDPOINT里换成你自己的ip即可。

在浏览器输入 http://your-host-ip:80 即可访问 Kuboard v3.x 的界面,登录方式:

用户名: admin

密 码: Kuboard123

如果无法登录换成30080端口

3、安装 jenkins

创建一个 kenkins.yml文件,内如加入其中


apiVersion: apps/v1
kind: Deployment
metadata:
  name: jenkins-new
spec:
  replicas: 1
  selector:
    matchLabels:
      app: jenkins-new
  template:
    metadata:
      labels:
        app: jenkins-new
    spec:
      containers:
      - name: jenkins-new
        image: jenkins/jenkins:lts-jdk11    ###jenkinsci/blueocean
        ports:
        - containerPort: 8080
        volumeMounts:
        - name: jenkins-home
          mountPath: /var/jenkins_home
      volumes:
      - name: jenkins-home

执行命令安装 jenkins(如果失败,在 jenkins.yml 前面加上绝对路径)

kubectl apply -f jenkins.yml

等待一会即可 IP:8080访问 jenkins后台页面,根据提示从服务器找到密码进行登陆初始化

4、配合 gitee 拉去代码进行部署

①、Dashboard-Manage Jenkins-插件管理下载 gitee 插件安装好后前往配置个人令牌进行测试

②、新建任务

K8S配合 jenkins 完整一键安装_第2张图片

③、填写对应的 git 地址 以及提前设置好对应的账号密码

K8S配合 jenkins 完整一键安装_第3张图片

 ④、拉去代码执行的 shell 脚本,按照个人情况编写,案例为 打包 java 代码并且进行覆盖容器现有内容(尾部会介绍初始化时怎么创建并且配置容器)

流程为:代码打包--打成 docker 镜像--上传到阿里云镜像管理--通过阿里云镜像内容更新现有容器

K8S配合 jenkins 完整一键安装_第4张图片

 ----------------------------------------------初始化创建容器-------------------------------------------------------------

        java 项目为例

1、docker 环境准备(baidu)

2、代码根目录需要存在Dockerfile文件,用于打包 docker 镜像 内容随意最终镜像可以运行即可(jar包名字需要记住并且为固定)

FROM openjdk:8

COPY demo.jar /app/demo.jar

CMD ["java", "-jar", "/app/demo.jar"]

cd到文件目录执行

your-image-name是你要给镜像取的 name tag 为版本号

docker build -t your-image-name:tag .

# 执行成功后查询是否打包成功

docker images

# 可查看所有镜像存在则为成功,不放心是否成功可以执行启动命令测试镜像


docker run your-image-name:tag

3、准备阿里云的容器镜像服务,执行前往设置

# 登录阿里云镜像管理
docker login --username=你的用户名 --password=你的密码 registry.cn-hangzhou.aliyuncs.com
# 确认镜像
docker tag your-images-name:tag registry.cn-hangzhou.aliyuncs.com/ceshimapper/ceshi:tag

# 上传镜像
docker push registry.cn-hangzhou.aliyuncs.com/ceshimapper/ceshi:tag

#your-images-name 和tag 填写 使用 docker-images总查出来的 name 和 TAG

4、准备工作完毕,进行创建容器启用镜像

创建容器 demo 为取好的名字,记住后面要用

kubectl create deployment demo  --image=demo

# 查询是否创建成功

kubectl get pods 

启动需要 2 个 yml 文件,随意目录创建 pod.yml和service.yml 2 个文件

文件中所有的 test 都要换成你创建容器时的名字  demo换成你的 jar 包名字 command中的目录要和打包时候一致

pod.yml

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: test
  name: test
spec:
  replicas: 1
  revisionHistoryLimit: 5
  selector:
    matchLabels:
      app: test
  template:
    metadata:
      labels:
        app: test
    spec:
      imagePullSecrets:
        - name: aliyun-docker-registry
      containers:
        - env:
            - name: TZ
              value: Asia/Shanghai
          command: ["/bin/sh","-c","java -Xmx512m -Dspring.profiles.active=test -Duser.home=/demo -jar /app/demo.jar"]    
          image: 'registry.cn-hangzhou.aliyuncs.com/ceshimapper/ceshi:0.07'
          name: test
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 8877
              protocol: TCP
#          resources:
#            limits:
#              memory: 2Gi
#            requests:
#              memory: 2Gi
          volumeMounts:
            - name: vm-log
              mountPath: /application/logs
            - name: vm-upload
              mountPath: /application/files
            - name: vm-data
              mountPath: /application/data
            - name: vm-static
              mountPath: /application/static
            - name: vm-config
              mountPath: /application/config

      restartPolicy: Always
      terminationGracePeriodSeconds: 30
      volumes:
        - name: vm-log
          hostPath:
            # 宿主机目录
            path: /www/websites/test/logs
            # hostPath 卷指定 type,如果目录不存在则创建(可创建多层目录)
            type: DirectoryOrCreate
        - name: vm-upload
          hostPath:
            path: /www/websites/test/files
            type: DirectoryOrCreate
        - name: vm-data
          hostPath:
            path: /www/websites/test/data
            type: DirectoryOrCreate
        - name: vm-static
          hostPath:
            path: /www/websites/test/static
            type: DirectoryOrCreate
        - name: vm-config
          hostPath:
            path: /www/websites/test/config
            type: DirectoryOrCreate
service.yml

apiVersion: v1
kind: Service
metadata:
  name: demo
  labels:
    app: demo
spec:
  type: NodePort
  ports:
#8199的意思是 你打 docker 镜像时候 jar 运行后的端口
    - port: 8199
      targetPort: 8199
#30818的意思是容器的入口,通过 30818 进入后会找到 demo服务的 8199
      nodePort: 30818
      name: demo
  selector:
    app: demo

开始启动 2 个 yml

kubectl apply -f /var/lib/jenkins/workspace/test/cicd/pod.yml



kubectl apply -f /var/lib/jenkins/workspace/test/cicd/service.yml

启动后等待执行结果,就可前往可视化页面查看容器状态

你可能感兴趣的:(kubernetes,jenkins,容器)