dockerfile 제작 미 러 및 k8s 에 적용
다음은 구체 적 인 내용 이다.
dockerfile 만 들 기
#mkdir /root/dockerfile
#cd /root/dockerfile
#touch Dockerfile
#mkdir nginx
dockerfile
root@:#cat Dockerfile
#Centos based container with tengine2.2
FROM docker.io/centos
MAINTAINER wbb-20181207 [email protected]
#prepare java environment
ENV LD_LIBRARY_PATH /usr/local/luajit/lib:$LD_LIBRARY_PATH
ENV LUAJIT_INC /usr/local/luajit/include/luajit-2.0
ENV LUAJIT_LIB /usr/local/luajit/lib
#copy jdk tomcat to container
ADD nginx.tar.gz /root/
RUN cd /root/nginx/ \
&& sh ngxinstall.sh \ #nginx.sh ,
&& ln -sf /dev/stdout /var/log/nginx/access.log \ # nginx k8s web-ui ,
&& ln -sf /dev/stderr /var/log/nginx/error.log
#private expose
EXPOSE 80
#START NGINX
#ENTRYPOINT [ "/usr/local/nginx/sbin/nginx", "-g", "daemon off;" ]
CMD ["/usr/local/nginx/sbin/nginx", "-g", "daemon off;"] , k8s deploy
cd /root/dockerfile
docker build -t nginx:v4 .
설치 과정 부분 캡 처
ngxinstall. sh 설치 스 크 립 트 는 dockerfile 에서 참조 합 니 다. 아래 설치 스 크 립 트 는 먼저 1 대의 기계 에서 테스트 하 는 것 이 좋 습 니 다. 문제 없 이 dockerfile 에서 참조 하면 됩 니 다.
nginx. sh 의 nginx 설치 스 크 립 트 만 들 기
root@:#cat ngxinstall.sh
#!/bin/bash
path=$(pwd)
#
yum makecache
yum -y install gcc gcc-c++ patch make openssl openssl-devel file
#
tar zxvf $path/tar/tengine-2.2.0.tar.gz -C $path/src/
#tar zxvf $path/tar/openssl-1.0.2p.tar.gz -C $path/src/
tar zxvf $path/tar/zlib-1.2.11.tar.gz -C $path/src/
tar zxvf $path/tar/nginx-accesskey.tar.gz -C $path/src/
tar zxvf $path/tar/pcre-8.40.tar.gz -C $path/src/
tar zxvf $path/tar/waf.tar.gz -C $path/src/
tar zxvf $path/tar/nginx_tcp_proxy_module-master.tar.gz -C $path/src/
tar zxvf $path/tar/LuaJIT-2.0.5.tar.gz -C $path/src/
tar zxvf $path/tar/ngx_devel_kit-0.2.19.tar.gz -C $path/src/
tar zxvf $path/tar/lua-nginx-module-0.9.5rc2.tar.gz -C $path/src/
#
echo "export LD_LIBRARY_PATH=/usr/local/luajit/lib:$LD_LIBRARY_PATH" >> /etc/profile
echo "export LUAJIT_INC=/usr/local/luajit/include/luajit-2.0" >> /etc/profile
echo "export LUAJIT_LIB=/usr/local/luajit/lib" >> /etc/profile && source /etc/profile
source /etc/profile
cd $path/src/LuaJIT-2.0.5
make PREFIX=/usr/local/luajit
make install PREFIX=/usr/local/luajit
#tengine
#useradd -s /sbin/nologin nginx
cd $path/src/tengine-2.2.0
patch -p1 < $path/src/nginx_tcp_proxy_module-master/tcp.patch
./configure --user=root --group=root \
--prefix=/usr/local/nginx \
--lock-path=/var/run/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--http-client-body-temp-path=/var/cache/nginx/client_temp \
--http-proxy-temp-path=/var/cache/nginx/proxy_temp \
--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \
--http-scgi-temp-path=/var/cache/nginx/scgi_temp \
--pid-path=/var/run/nginx.pid \
--add-module=../ngx_devel_kit-0.2.19 \
--add-module=../lua-nginx-module-0.9.5rc2 \
--add-module=../nginx-accesskey-2.0.3 \
--add-module=../nginx_tcp_proxy_module-master \
--with-pcre=../pcre-8.40 \
--with-zlib=../zlib-1.2.11 \
--with-http_ssl_module \
--with-http_realip_module \
--with-http_gzip_static_module \
--with-http_stub_status_module \
--with-http_flv_module \
--with-http_mp4_module \
--with-http_gunzip_module \
--with-http_random_index_module \
--with-http_secure_link_module \
--with-http_auth_request_module \
--with-http_v2_module \
--with-http_addition_module \
--with-http_sub_module \
--with-file-aio \
--with-cc-opt='-O2 -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic' \
--with-ld-opt=-Wl,-rpath,/usr/local/lib
source /etc/profile
make
make install
# , , , .conf
cp $path/src/nginx.conf /usr/local/nginx/conf/
cp $path/src/proxy.conf /usr/local/nginx/conf/
cp $path/src/error.conf /usr/local/nginx/conf/
cp -r $path/src/html /usr/local/nginx/
cp -r $path/src/waf /usr/local/nginx/conf/
mkdir -p /usr/local/nginx/vhost
mkdir -p /usr/local/nginx/tcp
cp $path/src/default.conf /usr/local/nginx/vhost/
cp $path/src/tcp.conf /usr/local/nginx/tcp/ # tcp
rm -rf /root/nginx #
ngx - depolyment. yaml 파일 만 들 기
---
# nginx
apiVersion: v1
kind: Namespace
metadata:
name: k8s-go
---
# nginx svc
apiVersion: v1
kind: Service
metadata:
name: k8s-nginx
namespace: k8s-go
labels:
app: k8s-nginx
spec:
type: NodePort
ports:
- port: 80
targetPort: 80
nodePort: 10280
protocol: TCP
#clusterIP: 169.169.249.80
selector:
app: k8s-nginx
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deploy
namespace: k8s-go
labels:
app: k8s-nginx
spec:
replicas: 1
selector:
matchLabels:
app: k8s-nginx
template:
metadata:
labels:
app: k8s-nginx
annotations:
app: nginx-clouster
spec:
containers:
- name: nginx
image: 172.16.0.2:5000/nginx:v4 #
imagePullPolicy: Always # , node
volumeMounts:
- mountPath: /usr/local/www
name: nginx-data
#- mountPath: /etc/nginx/conf.d
# name: nginx-conf
resources:
limits:
cpu: 300m
memory: 3000Mi
requests:
cpu: 100m
memory: 100Mi
ports:
- containerPort: 80
volumes:
- name: nginx-data
persistentVolumeClaim:
claimName: nginx-data-nfs-pvc # nginx pvc, pv,pvc
- name: nginx-conf
persistentVolumeClaim:
claimName: nginx-conf-nfs-pvc # nginx pvc, pv,pvc
#volumes:
# - name: nginx-nfs
# nfs:
# server: 172.16.0.2
# path: /data/nfs-storage/nginx
nginx - data - nfs - pv nginx - data - nfs - pvc 만 들 기
#root@:#cat ngx-data-nfs-pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: nginx-data-nfs-pv
namespace: k8s-go
labels:
pv: nginx-data-pv
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteMany
nfs:
server: 172.16.0.2
path: "/data/nfs-storage/nginx/data/"
-----
#root@:#cat ngx-data-nfs-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nginx-data-nfs-pvc
namespace: k8s-go
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 5Gi
selector:
matchLabels:
pv: nginx-data-pv
nginx - conf - nfs - pv nginx - conf - nfs - pvc 만 들 기
#root@:#cat ngx-conf-nfs-pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: nginx-conf-nfs-pv # ,
namespace: k8s-go
labels:
pv: nginx-conf-pv #pvc pv ,
spec:
capacity:
storage: 500Mi
accessModes:
- ReadWriteMany
nfs:
server: 172.16.0.2 # nfs
path: "/data/nfs-storage/nginx/conf/"
-----
#root@:#cat ngx-conf-nfs-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nginx-conf-nfs-pvc
namespace: k8s-go
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 500Mi
selector: # pvc
matchLabels:
pv: nginx-conf-pv
NFS 만 들 기
#root@:#cat /etc/exports
/data/nfs-storage/nginx *(rw,insecure,sync,no_subtree_check,no_root_squash)
/data/nfs-storage/tomcat *(rw,insecure,sync,no_subtree_check,no_root_squash)
/data/nfs-storage/app *(rw,insecure,sync,no_subtree_check,no_root_squash)
#root@:#ls
conf data ssl
conf .conf , default.conf
data .conf ,
ssl , default.pem,default.key ssh.conf
k8s dashboard 에 표 시 된 생 성 nginx pod,
외부 네트워크 액세스 디 스 플레이 테스트 페이지
nginx 로 그 는 웹 - ui 에 표 시 됩 니 다. 로 그 를 표시 하려 면 dockerfile 에서 정의 해 야 합 니 다. 그렇지 않 으 면 표 시 됩 니 다. k8s 로 그 는 / dev / stdout / dev / stderr 에서 가 져 왔 기 때 문 입 니 다.
다음으로 전송:https://blog.51cto.com/running/2327816
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.