ドッカー+ K8S +マイクロサービス展開

EDITORIAL

構築方法やプロセスのドッキングウィンドウ+ K8Sについて1、ブログの前に参照してください。

2. 私たちは、アーキテクチャがduboo建築パターンである使用します。Tomcatのjarファイルを除くすべてのアプリケーションとは、仮想マシンを起動する必要があります。

Tomcatを起動するためのコンテナを使用して、

コンテナの使用はプロジェクトを開始したので、実行アップ後にそれ以外の場合は、コンテナが自動的に終了し、フォアグラウンドで実行中のプロセスが存在しなければなりません。だから我々は、独自の構成の一部を構築して行う公式の二次ミラーTomcat上で実施しました。

Tomcatの画像コンテナの正式開始後、Tomcatのログがプリントアウトフロントデスクに置かれ、そして切断をログに記録しません。コンテナ出口ログが失われた後。私たちは、この2つの問題を解決する必要があります。

一つの問題:ログ・カット

まず、コンテナcronologツールをコンパイルしてインストールします。しかし、このシステムはcronologのgccをインストールする前にソフトウェアをインストールする必要があり、Tomcatの公式ミラーは非常にきれいであり、我々は最初のあなたが作る、それをインストールしていると同時に、GCCのgccをインストールする必要はありませんでした。

第二の問題:フォアグラウンドで問題ログ出力。

ウェイミラーTomcatの公式発表コンテナが起動するcatalina.shの実行方法です。フォアグラウンドでこのような直接出力開始ログは、コンテナが終了していないことを確認することができます。しかし、我々はそれがローカルにログオンすることです目指しています。

私たちは、Tomcatの次のように、スクリプトstart.shを書くために、別の言い方をする起動します。

#!/ binに/ SHの
SHの/usr/local/tomcat/bin/startup.shの
は、tail -f /usr/local/tomcat/bin/catalina.sh

あなたがTomcatの直接startup.sh道を開始した場合、フォアグラウンドプロセスにつながるので実行されていない、それはコンテナが終了する原因となるので、私たちの後ろは、tail -fコマンドを追加します。その尾はちょうどライン上のファイルを書き込みます。

これは、Tomcatは、それがバックグラウンドで維持ログを切断すると同時に行われるログことを確実にします。

次のように文書Dockerfile読み取ります。

TomcatのFROM:7.0 -スリム
LABELメンテナ= "ZhiYu新<[email protected]>" 

./catalina.sh ADDは/ usr / local / tomcatに/ binに/ 
ADD ./cronolog-1.6.2.tar.gzは/ opt / 
./start.shは/ usr / local / tomcatに/ binに/ ADD 
WORKDIR /opt/cronolog-1.6.2 
RUNエコー"DEB非フリーhttp://ftp.us.debian.org/debian/ジェシーメインのcontribを"> > \ 
    の/etc/apt/sources.list &&エコー"のdeb-srcのhttp://ftp.us.debian.org/debian/ジェシーメインのcontrib non-freeの" \ 
        >>の/etc/apt/sources.list &&がち-get更新-y && -yのgcc-4.8グラム++をインストールapt-getの- 4.8グラム++ - 4.8-multilibの&& \作る
        作るに./configure && &&開始/ &&のchmod aが+ Xは/ usr / local / tomcatに/ binにインストールします。SH 
8080 EXPOSE 
ENTRYPOINT [ "/ binに/ SH"、 "/usr/local/tomcat/bin/start.shを"]

3つの問題:貯蔵容器をログに記録する方法は、ドッキングウィンドウのホストに直接出力されます。

私たちは、コンテナの時点で開始する必要があり、コンテナは、その上に/ logsディレクトリには/ usr / local / tomcatに次のボリュームをマウントします。

対応するディレクトリを作成するために、地元の容器で最高を開始する前に。

次のようにYML開始コンテナの内容は以下のとおりです。

apiVersion:アプリ/ V1の
種類:展開
メタデータ:
  名前:Tomcatの
  ラベル:
    アプリケーション:Tomcatの
仕様:
  レプリカ:1 
  セレクタ:
    matchLabels:
      アプリケーション:Tomcatの
  テンプレート:
    メタデータ:
      ラベル:
        アプリケーション:Tomcatの
    仕様:
      #は、後のボリューム宣言
      のボリュームを:
      -名前: "Tomcatのログ" 
        ホストパス:
          パス: "/データ" 
      コンテナ:
      -名前:tomcat1 
        画像:xinsir8 / Tomcatの:v1の
        ポート:
        - containerPort:8080の
        #は、ボリュームのマウント
        volumeMountsを:
        #マウントディレクトリへ
         - MOUNTPATH:Tomcatの/ログは/ usr / local / 
           Tomcatの対数:名
        #リソースの制約の
        資源:
         要求:
          メモリ: "64Mi" 
          CPU: "250メートル" 
         制限:
          メモリー: "128Mi" 
          CPU:「500メートル"

質問4:どのようにネットワークの問題のトラブルシューティングを行うには、通信、およびスケジューリングのTomcatの瓶と通信nginxのTomcatとそうで。

実際には、この問題に非常に簡単な解決策は、我々はこの問題を解決することができるサービスを作成します。次のようにYMLファイル作成サービスを読み込みます

apiVersion:v1の
種類:サービス

メタデータ:
 #サービス名
 名:Tomcatの-サービス
仕様:
 タイプ#サービス、種類、を含むが[NodePort、CLUSTERIP、NodePort、ロードバランサ]に限定されない
 タイプの:NodePort 
 :ポート
 のポート番号のコンテナ
 -ポート: 8080 
 #マッピングされたポート
   nodePort:31003 
 セレクター:
 #は、このサービスは、同じTomcatのアプリの上でラベルされたすべてのコンテナに適用される
  アプリ:tomcatに


おすすめ

転載: blog.51cto.com/xinsir/2407888