K8S发布系统-发布访问配置

接上一篇,后续操作

发布配置

安装插件

安装SSH,Docker,Docker Pipeline, docker-build-step, Kubernetes插件。

设置Docker打包机(若使用本地安装的docker进行打包,此操作忽略):

远程打包机(220.143)开启端口:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
vim /etc/systemd/system/docker.service
vim /etc/systemd/system/docker.service
vim /etc/systemd/system/docker.service
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
...
ExecStart=/opt/kube/bin/dockerd -H <span style="color: #ff0000;">tcp://0.0.0.0:2375 -H unix://var/run/docker.sock</span>
...
... ExecStart=/opt/kube/bin/dockerd -H <span style="color: #ff0000;">tcp://0.0.0.0:2375 -H unix://var/run/docker.sock</span> ...
...
ExecStart=/opt/kube/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
...
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
systemctl daemon-reload
systemctl restart docker
netstat -nlput | grep docker
systemctl daemon-reload systemctl restart docker netstat -nlput | grep docker
systemctl daemon-reload
systemctl restart docker
netstat -nlput | grep docker

Jenkins设置“系统管理——节点管理——配置云”添加远程Docker:

创建基础Docker镜像

在打包机(220.143)上操作:

拉取官方系统镜像

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
docker pull centos
docker images
docker pull centos docker images
docker pull centos
docker images

准备要添加进镜像的文件:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
mkdir docker-baseimg
cd docker-baseimg
vim java.sh
mkdir docker-baseimg cd docker-baseimg vim java.sh
mkdir docker-baseimg
cd docker-baseimg
vim java.sh
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
export JAVA_HOME=/usr/local/jdk1.8.0_271
export PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME=/usr/local/jdk1.8.0_271 export PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME=/usr/local/jdk1.8.0_271
export PATH=$JAVA_HOME/bin:$PATH
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
vim start-jar.sh
vim start-jar.sh
vim start-jar.sh
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#!/bin/bash
# Author:Chris __On 2021/01/18
# =====================Description=====================
# [Features]: This is for Start a jar Package in Docker Container.
# =====================================================
# <----------------------------Configure Start--------------------------->
Base=$(cd `dirname ${BASH_SOURCE}` ; pwd)
App_Name="app.jar"
App_Execute="${Base}/${App_Name}"
Log_Path="${Base}/logs"
App_Log="${Log_Path}/app-stdout.log"
Xms=${JVM_XMS:-"256m"}
Xmx=${JVM_XMX:-"512m"}
Start_Opts="-Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -XX:+UseCMSInitiatingOccupancyOnly -XX:-UseLargePages -XX:+UseFastAccessorMethods -XX:-OmitStackTraceInFastThrow -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${Log_Path}/java_heapdump.hprof"
[ ! -z "${PROFILE_ACTIVE}" ] && S_Profile="--spring.profiles.active=${PROFILE_ACTIVE}"
Ext_Args="$@"
# <----------------------------Configure End---------------------------->
if [ ! -f "${App_Execute}" ];then
echo "ERROR: Can not find execute file: ${App_Execute}."
exit 1
fi
if [ -z "${JAVA_HOME}" ];then
source /etc/profile.d/java.sh
fi
[ ! -d "${Log_Path}" ] && mkdir -p ${Log_Path}
# 使用exec command, 会用 command 进程替换当前shell进程, 并且保持 PID 不变。
# 为保证Docker容器不会终止, 脚本需一直处于运行状态,
# 故不要在最后添加 & 让java在后台另起进程运行, 而是直接替代当前脚本运行。
# Tips: docker logs显示容器内/dev/stdout, /dev/stderr的内容, 阿里云k8s也是收集此日志;
# 故运行时就不进行日志重定向($App_Log)及 2>&1 了
exec java -server -Xms${Xms} -Xmx${Xmx} -jar ${App_Execute} ${Start_Opts} ${S_Profile} ${Ext_Args}
#!/bin/bash # Author:Chris __On 2021/01/18 # =====================Description===================== # [Features]: This is for Start a jar Package in Docker Container. # ===================================================== # <----------------------------Configure Start---------------------------> Base=$(cd `dirname ${BASH_SOURCE}` ; pwd) App_Name="app.jar" App_Execute="${Base}/${App_Name}" Log_Path="${Base}/logs" App_Log="${Log_Path}/app-stdout.log" Xms=${JVM_XMS:-"256m"} Xmx=${JVM_XMX:-"512m"} Start_Opts="-Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -XX:+UseCMSInitiatingOccupancyOnly -XX:-UseLargePages -XX:+UseFastAccessorMethods -XX:-OmitStackTraceInFastThrow -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${Log_Path}/java_heapdump.hprof" [ ! -z "${PROFILE_ACTIVE}" ] && S_Profile="--spring.profiles.active=${PROFILE_ACTIVE}" Ext_Args="$@" # <----------------------------Configure End----------------------------> if [ ! -f "${App_Execute}" ];then echo "ERROR: Can not find execute file: ${App_Execute}." exit 1 fi if [ -z "${JAVA_HOME}" ];then source /etc/profile.d/java.sh fi [ ! -d "${Log_Path}" ] && mkdir -p ${Log_Path} # 使用exec command, 会用 command 进程替换当前shell进程, 并且保持 PID 不变。 # 为保证Docker容器不会终止, 脚本需一直处于运行状态, # 故不要在最后添加 & 让java在后台另起进程运行, 而是直接替代当前脚本运行。 # Tips: docker logs显示容器内/dev/stdout, /dev/stderr的内容, 阿里云k8s也是收集此日志; # 故运行时就不进行日志重定向($App_Log)及 2>&1 了 exec java -server -Xms${Xms} -Xmx${Xmx} -jar ${App_Execute} ${Start_Opts} ${S_Profile} ${Ext_Args}
#!/bin/bash
# Author:Chris                          __On 2021/01/18
# =====================Description=====================
# [Features]: This is for Start a jar Package in Docker Container.
# =====================================================

# <----------------------------Configure Start--------------------------->
Base=$(cd `dirname ${BASH_SOURCE}` ; pwd)
App_Name="app.jar"
App_Execute="${Base}/${App_Name}"
Log_Path="${Base}/logs"
App_Log="${Log_Path}/app-stdout.log"

Xms=${JVM_XMS:-"256m"}
Xmx=${JVM_XMX:-"512m"}
Start_Opts="-Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -XX:+UseCMSInitiatingOccupancyOnly -XX:-UseLargePages -XX:+UseFastAccessorMethods -XX:-OmitStackTraceInFastThrow -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${Log_Path}/java_heapdump.hprof"
[ ! -z "${PROFILE_ACTIVE}" ] && S_Profile="--spring.profiles.active=${PROFILE_ACTIVE}"
Ext_Args="$@"
# <----------------------------Configure  End---------------------------->
if [ ! -f "${App_Execute}" ];then
    echo "ERROR: Can not find execute file: ${App_Execute}."
    exit 1
fi
if [ -z "${JAVA_HOME}" ];then
    source /etc/profile.d/java.sh
fi
[ ! -d "${Log_Path}" ] && mkdir -p ${Log_Path}

# 使用exec command, 会用 command 进程替换当前shell进程, 并且保持 PID 不变。
# 为保证Docker容器不会终止, 脚本需一直处于运行状态, 
# 故不要在最后添加 & 让java在后台另起进程运行, 而是直接替代当前脚本运行。
# Tips: docker logs显示容器内/dev/stdout, /dev/stderr的内容, 阿里云k8s也是收集此日志;
#       故运行时就不进行日志重定向($App_Log)及 2>&1 了
exec java -server -Xms${Xms} -Xmx${Xmx} -jar ${App_Execute} ${Start_Opts} ${S_Profile} ${Ext_Args}
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
chmod +x start-jar.sh
vim Dockerfile
chmod +x start-jar.sh vim Dockerfile
chmod +x start-jar.sh
vim Dockerfile
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
FROM centos as build
RUN sed -i "/^alias mv/a\alias ll='ls -lh --time-style=\"+%Y/%m/%d %H:%M\" --color'" ~/.bashrc
RUN mkdir -p /app/logs
ADD jdk-8u271-linux-x64.tar.gz /usr/local/
ADD java.sh /etc/profile.d/
ADD start-jar.sh /app/
RUN cd /usr/local/jdk1.8.0_271 && rm -rf src.zip \
lib/visualvm jre/lib/plugin.jar jre/bin/javaws \
jre/lib/desktop jre/plugin jre/lib/deploy* \
jre/lib/amd64/libglass.so \
jre/lib/amd64/libgstreamer-lite.so \
jre/lib/amd64/libjavafx*.so \
jre/lib/amd64/libjfx*.so
FROM scratch
COPY --from=build / .
LABEL maintainer="Chris"
WORKDIR /app
FROM centos as build RUN sed -i "/^alias mv/a\alias ll='ls -lh --time-style=\"+%Y/%m/%d %H:%M\" --color'" ~/.bashrc RUN mkdir -p /app/logs ADD jdk-8u271-linux-x64.tar.gz /usr/local/ ADD java.sh /etc/profile.d/ ADD start-jar.sh /app/ RUN cd /usr/local/jdk1.8.0_271 && rm -rf src.zip \ lib/visualvm jre/lib/plugin.jar jre/bin/javaws \ jre/lib/desktop jre/plugin jre/lib/deploy* \ jre/lib/amd64/libglass.so \ jre/lib/amd64/libgstreamer-lite.so \ jre/lib/amd64/libjavafx*.so \ jre/lib/amd64/libjfx*.so FROM scratch COPY --from=build / . LABEL maintainer="Chris" WORKDIR /app
FROM centos as build
RUN sed -i "/^alias mv/a\alias ll='ls -lh --time-style=\"+%Y/%m/%d %H:%M\" --color'" ~/.bashrc
RUN mkdir -p /app/logs
ADD jdk-8u271-linux-x64.tar.gz /usr/local/
ADD java.sh /etc/profile.d/
ADD start-jar.sh /app/
RUN cd /usr/local/jdk1.8.0_271 && rm -rf src.zip \
    lib/visualvm jre/lib/plugin.jar jre/bin/javaws \
    jre/lib/desktop jre/plugin jre/lib/deploy* \
    jre/lib/amd64/libglass.so \
    jre/lib/amd64/libgstreamer-lite.so \
    jre/lib/amd64/libjavafx*.so \
    jre/lib/amd64/libjfx*.so
FROM scratch
COPY --from=build / .
LABEL maintainer="Chris"
WORKDIR /app

Dockerfile中的相关命令解释:

  • FROM 指的是依赖的基础镜像,如scratch表示的是空白的,从零开始的。依赖的镜像可以是本地的,也可以是远程库的
  • ADD 指的是添加本地文件到镜像中,如果遇到linux可解压格式文件,会自动解压,这就是为什么整个文件中没有对tar.gz进行显式解压
  • RUN 运行命令,如安装软件的相关命令
  • CMD 设置启动Container时默认执行的命令,这个可以在启动容器时覆盖
  • 第二阶段 FROM 空库scratch后,将现存所有文件复制过来,从零构建新镜像,减少不必要的层,缩小镜像体积

制作镜像:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
docker build -t baseimg-jdk8:c8 .
docker images
docker build -t baseimg-jdk8:c8 . docker images
docker build -t baseimg-jdk8:c8 .
docker images

试运行基础镜像:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
docker run -it --rm baseimg-jdk8:c8 /bin/bash
docker run -it --rm baseimg-jdk8:c8 /bin/bash
docker run -it --rm baseimg-jdk8:c8 /bin/bash

上传基础镜像到Harbor:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
vim /etc/docker/daemon.json
vim /etc/docker/daemon.json
vim /etc/docker/daemon.json
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
...
"insecure-registries": ["127.0.0.1/8","nw-harbor.xxx.cc"],
...
... "insecure-registries": ["127.0.0.1/8","nw-harbor.xxx.cc"], ...
...
  "insecure-registries": ["127.0.0.1/8","nw-harbor.xxx.cc"],
...
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
systemctl restart docker
docker info
systemctl restart docker docker info
systemctl restart docker
docker info

 

Tips:若要从自建Harbor上拉取镜像,此配置需要在群集内所有worker上都操作。若Harbor配置了HTTPS访问则可不用。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
docker login http://nw-harbor.xxx.cc/ -u admin -p Nw-Harbor123
docker login http://nw-harbor.xxx.cc/ -u admin -p Nw-Harbor123
docker login http://nw-harbor.xxx.cc/ -u admin -p Nw-Harbor123

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
docker tag baseimg-jdk8:c8 nw-harbor.xxx.cc/library/baseimg-jdk8:c8
docker images
docker tag baseimg-jdk8:c8 nw-harbor.xxx.cc/library/baseimg-jdk8:c8 docker images
docker tag baseimg-jdk8:c8 nw-harbor.xxx.cc/library/baseimg-jdk8:c8
docker images

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
docker push nw-harbor.xxx.cc/library/baseimg-jdk8:c8
docker push nw-harbor.xxx.cc/library/baseimg-jdk8:c8
docker push nw-harbor.xxx.cc/library/baseimg-jdk8:c8

登陆Harbor,即可看到已上传:

在顶级目录新建一个项目:

Tips: 本地打包下载基础镜像方法:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
docker save -o baseimg-jdk8.tar baseimg-jdk8:c8
docker save -o baseimg-jdk8.tar baseimg-jdk8:c8
docker save -o baseimg-jdk8.tar baseimg-jdk8:c8

导入还原使用:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
docker load -i baseimg-jdk8.tar
docker load -i baseimg-jdk8.tar
docker load -i baseimg-jdk8.tar

 

发表评论

error: Content is protected !!