Home
Explore
Submit Search
Upload
Login
Signup
Advertisement
On-Premise Kubernetes on Rancher
Report
Yasushi Kanaya
Follow
Uzabase,Inc
Mar. 19, 2018
•
0 likes
6 likes
×
Be the first to like this
Show More
•
3,608 views
views
×
Total views
0
On Slideshare
0
From embeds
0
Number of embeds
0
Check these out next
Kubernetesと暮らすRancherな生活
Go Chiba
kubetnetes etc.. & Rancher2.0 Technical Preview -import BLUMIX K8S Clusters-
cyberblack28 Ichikawa
Magnum - A new OpenStack API for Containers -
Takehiro Kaneko
Container Networking Deep Dive
Hirofumi Ichihara
Introduction to Magnum (JP)
Motohiro OTSUKA
Arukas meet Mesos/Marathon
Shuji Yamada
kubernetes(GKE)環境におけるdatadog利用
Koichi HARUNA
小規模でもGKE - DevFest Tokyo 2016
lestrrat
1
of
89
Top clipped slide
On-Premise Kubernetes on Rancher
Mar. 19, 2018
•
0 likes
6 likes
×
Be the first to like this
Show More
•
3,608 views
views
×
Total views
0
On Slideshare
0
From embeds
0
Number of embeds
0
Download Now
Download to read offline
Report
Technology
On-Premise Kubernetes on Rancher
Yasushi Kanaya
Follow
Uzabase,Inc
Advertisement
Advertisement
Advertisement
Recommended
Introduction of Kubernetes & Rancher
cyberblack28 Ichikawa
3.7K views
•
73 slides
What's RancherJP
cyberblack28 Ichikawa
323 views
•
27 slides
Docker入門 OSC 2018 Tokyo/Spring
cyberblack28 Ichikawa
4.3K views
•
43 slides
オープンソースのコンテナ管理プラットフォーム Rancher のご紹介
Ryotaro Kobayashi
2.2K views
•
54 slides
Rancher2.0で実現する Managed Kubernetes Service
LINE Corporation
2.7K views
•
32 slides
話題のKubernetesをRancher2.0で 便利に使う!
cyberblack28 Ichikawa
2K views
•
28 slides
More Related Content
Slideshows for you
(20)
Kubernetesと暮らすRancherな生活
Go Chiba
•
1.7K views
kubetnetes etc.. & Rancher2.0 Technical Preview -import BLUMIX K8S Clusters-
cyberblack28 Ichikawa
•
284 views
Magnum - A new OpenStack API for Containers -
Takehiro Kaneko
•
2.6K views
Container Networking Deep Dive
Hirofumi Ichihara
•
11.1K views
Introduction to Magnum (JP)
Motohiro OTSUKA
•
1.6K views
Arukas meet Mesos/Marathon
Shuji Yamada
•
1.2K views
kubernetes(GKE)環境におけるdatadog利用
Koichi HARUNA
•
2.3K views
小規模でもGKE - DevFest Tokyo 2016
lestrrat
•
2.5K views
Using ngx_lua / lua-nginx-module in pixiv
Shunsuke Michii
•
19.7K views
Docker on RHEL & Project Atomic 入門 - #Dockerjp 4
Emma Haruka Iwao
•
36.9K views
[Docker Tokyo #35] Docker 20.10
Akihiro Suda
•
3.7K views
さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...
さくらインターネット株式会社
•
12.3K views
コンテナネットワーキング(CNI)最前線
Motonori Shindo
•
30.6K views
Kubernetes etc.. & rancher 2.0 technical preview
cyberblack28 Ichikawa
•
1.3K views
Kubernetes Meetup Tokyo #8 Self-hosted Kubernetes を調べてみた
Akihito Inoh
•
1.7K views
20分でわかるgVisor入門
Shuji Yamada
•
22K views
DockerCon参加報告 (`docker build`が30倍以上速くなる話など)
Akihiro Suda
•
20.7K views
kube-system落としてみました
Shuntaro Saiba
•
3.7K views
GKEで半年運用してみた
Katsutoshi Nagaoka
•
19.6K views
OpenShift v3 Technical Overview
Nakayama Kenjiro
•
4.3K views
Similar to On-Premise Kubernetes on Rancher
(20)
How to use Ceph RBD as CloudStack Primary Storage
Kimihiko Kitase
•
5.4K views
20121115 オープンソースでハイアベイラビリティ! ~クラスタ管理の設計構築ハウツー&エンジニア思考力~
Iwasaki Noboru
•
1.9K views
Rancher basic seminar_200924
Junji Nishihara
•
172 views
Lenovo seminar rancher_200513
Junji Nishihara
•
56 views
LXC入門 - Osc2011 nagoya
Masahide Yamamoto
•
9.9K views
クラウド入門
真乙 九龍
•
2.7K views
Apache Ambari Overview -- Hadoop for Everyone
Yifeng Jiang
•
3K views
Cloudera Manager4.0とNameNode-HAセミナー資料
Cloudera Japan
•
5.1K views
B 8スポンサー講演資料 osnexus steven umbehocker (アファーム・ビジネスパートナーズ株)
softlayerjp
•
3K views
B 8スポンサー講演資料 osnexus steven umbehocker (アファーム・ビジネスパートナーズ株)
chenree3
•
454 views
単なるキャッシュじゃないよ!?infinispanの紹介
AdvancedTechNight
•
15.8K views
【AWS共催】"Hosted Rancher on AWS" オンラインミートアップ
Junji Nishihara
•
193 views
Cloudstack user group meeting in osaka
Naotaka Jay HOTTA
•
947 views
Hatena's Infrastructure from the beginning
Shinji Tanaka
•
3.2K views
大規模環境のOpenStackアップグレードの考え方と実施のコツ
Tomoya Hashimoto
•
3.7K views
OpenStack概要
Akira Yoshiyama
•
11.3K views
Oci file storage service deep dive 20181001 ss
Kenichi Sonoda
•
178 views
PaaSの作り方 Sqaleの場合
hiboma
•
14.1K views
OpenStackでも重要な役割を果たすPacemakerを知ろう!
ksk_ha
•
3.8K views
Oracle RACの弱点を克服する infinibandを使ったクラスターテクノロジー
Insight Technology, Inc.
•
1.8K views
Advertisement
Recently uploaded
(20)
Omnis
DaisukeFujita10
•
11 views
SoftwareControl.pdf
ssusercd9928
•
6 views
CDLEハッカソン2022参加報告.pdf
SHOIWA1
•
5 views
①【麦吉尔大学毕业证文凭学位证书|工艺完美复刻】
love445ds
•
2 views
UAV写真・レーザー測量test.pptx
ssuserb48d2b1
•
13 views
【DL輪読会】Flow Matching for Generative Modeling
Deep Learning JP
•
681 views
オレオレになりがちなテスト計画を見直した話
terahide
•
25 views
統計学の攻略_統計的仮説検定の9パターン.pdf
akipii Oga
•
87 views
留信网认证可查【皇家霍洛威学院文凭证书毕业证购买】
32lkhng
•
2 views
Kubernetes超入門
Takashi Suzuki
•
4 views
Oracle Cloud Infrastructure:2023年5月度サービス・アップデート
オラクルエンジニア通信
•
25 views
突如登場したAzure Developer CLIでなにができるのか?検証してみる
Kazumi IWANAGA
•
27 views
点群SegmentationのためのTransformerサーベイ
Takuya Minagawa
•
12 views
☀️【中央兰开夏大学毕业证成绩单留学生首选】
25mjhd12
•
4 views
Forguncy8 製品概要 202305.pptx
フォーガンシー
•
7 views
①【戴尔豪斯大学毕业证文凭学位证书|工艺完美复刻】
love445ds
•
2 views
ネットワークパケットブローカー市場.pdf
HinaMiyazu
•
3 views
①【汤普森河大学毕业证文凭学位证书|工艺完美复刻】
love445ds
•
2 views
【2023年5月】平成生まれのためのUNIX&IT歴史講座
法林浩之
•
16 views
GitHub Copilotとともに次の開発体験へ
Kazumi IWANAGA
•
15 views
On-Premise Kubernetes on Rancher
On-premise Kubernetes on Rancher
自己紹介 金屋 泰士 UZABASE, Inc
SRE Team SPEEDAのインフラエンジニア(主にサーバ/ミドル) オンプレミス環境の経験が長い 2007年04月~ NAVITIME JAPANにて、基盤運用部サーバチーム所属 2011年10月~ Chip1Stop(半導体ECサイト)にて、インフラ全般担当 2014年04月~ UZABASEにJoin ・k8s環境、ElasitcSearch環境、Xen仮想基盤、ハード監視、ストレージ等を構築
Table of Contents 1.
Backgrounds 2. Why Rancher 3. What’s Rancher 4. k8s on Rancher 5. DevOps with k8s 6. Monitoring k8s 7. Next Generation
Table of Contents 1.
Backgrounds 2. Why Rancher 3. What’s Rancher 4. k8s on Rancher 5. DevOps with k8s 6. Monitoring k8s 7. Next Generation
Backgrounds • SPEEDAはオンプレミス環境で稼働 • 巨大でモノリシックなアプリケーション •
開発者はマイクロサービスを推進したい • 開発者はコンテナ化を推進したい • 開発者はk8sを使いたい
Backgrounds • SPEEDAはオンプレミス環境で稼働 • 巨大でモノリシックなアプリケーション •
開発者はマイクロサービスを推進したい • 開発者はコンテナ化を推進したい • 開発者はk8sを使いたい アジャイルで 高速に開発したい!
・小改修でも全体に影響 ・機能追加も大がかり ・開発スピードが遅い ・デプロイが遅い ・増大し続けるヒープ ・頻繁なGC ・サーバ増設のコスト データ量も更新量も多 く、単純にクラウド移行 も難しい Version:1.0
・小改修でも全体に影響 ・機能追加も大がかり ・開発スピードが遅い ・デプロイが遅い ・増大し続けるヒープ ・頻繁なGC ・サーバ増設のコスト データ量も更新量も多 く、単純にクラウド移行 も難しい Version:2.0 ・新機能はMicroService ・機能別に開発できる ・e2eテストのコスト大 ・インフラへ依頼が多い (開発スピード上がらない) ・多数のVM構築 ・リソース効率悪い ・機能別にエンドポイント (LB)準備 ・運用コスト増加
・小改修でも全体に影響 ・機能追加も大がかり ・開発スピードが遅い ・デプロイが遅い ・増大し続けるヒープ ・頻繁なGC ・サーバ増設のコスト データ量も更新量も多 く、単純にクラウド移行 も難しい Version:3.0 ・新機能はMicroService ・機能別に開発できる ・リソース効率アップ ・運用コスト減 ・バランサも含め、開発者が環境 構築でき、開発スピードアップ ・e2eテスト環境も構築 ・Blue/Greenデプロイ
今回のスコープ kubernetes on Rancher DevOps
with k8s モニタリング Rancher環境
Table of Contents 1.
Backgrounds 2. Why Rancher 3. What’s Rancher 4. k8s on Rancher 5. DevOps with k8s 6. Monitoring k8s 7. Next Generation
Why Rancher Rancherを導入するに至った経緯 ┗ 開発環境でdockerを導入した ┗
コンテナ乱立で管理が困難 ┗ 統合管理プラットフォームが必要
Dev with Docker 開発環境でdockerを使い たい docker
engineを起動した サーバを複数準備
Dev with Docker 開発環境でdockerを使い たい docker
engineを起動した サーバを複数準備 コンテナの乱立 ・どこで何が動いているか 分からない ・クラスタ化されてないから リソース増強しづらい ・どこで何が動いているか 分からない ・スケールが困難
Dev with Docker 開発環境でdockerを使い たい docker
engineを起動した サーバを複数準備 コンテナの乱立 ・どこで何が動いているか 分からない ・クラスタ化されてないから リソース増強しづらい ・どこで何が動いているか 分からない ・スケールが困難 統合管理したい使い易い環境が良い
Dev with Docker 開発環境でdockerを使い たい docker
engineを起動した サーバを複数準備 コンテナの乱立 ・どこで何が動いているか 分からない ・クラスタ化されてないから リソース増強しづらい ・どこで何が動いているか 分からない ・スケールが困難 使い易い環境が良い 統合管理したい
Table of Contents 1.
Backgrounds 2. Why Rancher 3. What’s Rancher 4. k8s on Rancher 5. DevOps with k8s 6. Monitoring k8s 7. Next Generation
What’s Rancher ・コンテナ統合管理プラットフォーム ・RancherLabsが開発、運営、有償サポート ・現行は1.6系(今回はこちら)
RancherOSの特徴 ・軽量で新しいLinux/Docker ・各環境で稼働 Cloud,VM,BareMetal ・cloud-config.yml で一括設定可能 ・Docker
on Dockerで分離・モジュール化 ・コマンドが軽量OSでは充実(defaultで)
軽量で新しいLinux/Docker ・随時追従(Stable) 2018/03時点 ・Docker 17.09.1-ce
⇔ 17.12.1-ce(本家) ・Linux 4.9.78 ⇔ 4.9.87(本家LTS) ・ISOファイルは70MB ・インストール後は300MB程度
各環境で稼働 ・AWS(AMIあり) ・GCE(Imageあり) ・Digital Ocean ・OpenStack、VMwareESXi、XenServer →しっかりメンテされていて安心
cloud-config.yml で一括設定可能 ・hostname,Network,Disk,SSH-Key,sysctl ・write_files でファイル生成可能 ・必要な設定を柔軟に設定可能
Docker on Dockerで分離・モジュール化 ホスト (仮想
or 物理マシン) SYSTEM DOCKER 下記を提供 ・デバイス ・コンソール ・ネットワーク ・基本サービス (NTP,DNS等) USER DOCKER Docker Engineに相当 ユーザのコンテナを稼 働させる
Docker on Dockerで分離・モジュール化 ・OS/dockerやConsoleを簡単に切替可能 利用可能なdocker #
ros engine list disabled docker-1.12.6 disabled docker-1.13.1 disabled docker-17.03.1-ce current docker-17.03.2-ce disabled docker-17.09.1-ce 切替え # ros engine switch docker-17.09.1-ce 利用可能なconsole # ros console list disabled alpine disabled centos disabled debian current default disabled fedora disabled ubuntu 切替え # ros console switch centos 利用可能なOSバージョン # ros os list rancher/os:v1.2.0 remote latest rancher/os:v1.1.4 remote available rancher/os:v1.1.3 local available running rancher/os:v1.1.2 remote available 切替え(バージョンアップ) # ros os upgrade -i rancher/os:v1.2.0
コマンドが軽量OSでは充実(default console) ・telnet netstat
traceroute wget tftp ・less tr jq envsubst ・bash getopt expr basename dirname ・lsof lspci mount rsync
・コンテナ稼動 ・クラスタ/HA構成 ・スタック ・Environment、RBAC、オーケストレーション ・アプリケーションカタログ
Rancherクラスタの構成 rancher/server rancher/server rancher/server cattle外部DB 外部バランサ https://rancherXX.uzabase.com Rancher
Agent rancher/agent rancher/agent rancher/agent Rancher Server ホスト 管理 ・管理GUIを提供 ・管理情報(ユーザ、ホスト、レジ ストリ、etc...) ・複数台サーバでクラスタ化 ・外部DBで管理情報を永続化 ・コンテナ稼働環境 ・Environmentで定義した(オーケ ストレーション、ユーザ) ・必要に応じてホスト追加 Environment(ホスト、ユーザ、オーケストレーション)
コンテナ稼動 ・RancherServer(管理) ・管理GUI、管理情報、RancherAgent管理 ・RancherAgent(コンテナ動作環境) rancher/server rancher/agent
Rancherクラスタの構成 rancher/server rancher/server rancher/server cattle外部DB 外部バランサ https://rancherXX.uzabase.com Rancher
Agent rancher/agent rancher/agent rancher/agent Rancher Server ・管理GUIを提供 ・管理情報(ユーザ、ホスト、レジ ストリ、etc...) ・複数台サーバでクラスタ化 ・外部DBで管理情報を永続化 ・コンテナ稼働環境 ・Environmentで定義した(オーケ ストレーション、ユーザ) ・必要に応じてホスト追加 Environment(ホスト、ユーザ、オーケストレーション) ホスト 管理
クラスタ/HA構成 ・外部DB起動(MySQL) ・複数RancherServerを起動(外部DB接続) ・外部バランサに追加 docker run -d
--restart=unless-stopped -p 8080:8080 rancher/server --db-host myhost --db-port 3306 --db-user username --db-pass password --db-name cattle
Rancherクラスタの構成 rancher/server rancher/server rancher/server cattle外部DB 外部バランサ https://rancherXX.uzabase.com Rancher
Agent rancher/agent rancher/agent rancher/agent Rancher Server ・管理GUIを提供 ・管理情報(ユーザ、ホスト、レジ ストリ、etc...) ・複数台サーバでクラスタ化 ・外部DBで管理情報を永続化 ・コンテナ稼働環境 ・Environmentで定義した(オーケ ストレーション、ユーザ) ・必要に応じてホスト追加 Environment(ホスト、ユーザ、オーケストレーション) ホスト 管理
スタック(docker-compose) ・アプリケーション、システムサービスをスタックとして管理 ・インフラストラクチャースタック ・システム共通で稼動するサービス ・ネットワーク(CNI、Rancher内部DNS) ・ユーザースタック ・ユーザーが作成したアプリケーション
docker-compose.yml 一般的な docker-composeファイル version:2 rancher-compose.yml マルチホスト用のdocker-compose スケール数などを設定できる
Rancherクラスタの構成 rancher/server rancher/server rancher/server cattle外部DB 外部バランサ https://rancherXX.uzabase.com Rancher
Agent rancher/agent rancher/agent rancher/agent Rancher Server Environment(ホスト、ユーザ、オーケストレーション) インフラストラクチャースタック ネットワーク/CNI(Container Networking Interface)、Rancher内部DNS マルチホストでのDockerネットワークをサポート ユーザースタック ユーザーが作成したアプリケーション ホスト 管理
Environment、RBAC、オーケストレーション 下記をEnvironment(環境)として管理 ・オーケストレーション(k8s,cattle,Mesos,swarm) ・ホスト ・ユーザ ・ロール(RBAC)
権限のタイプ ユーザ タイプ できること ユーザA
管理者 管理操作(ユーザ追加、アクセス権操作)含む全て ユーザB ユーザ 自分が所属するEnvironmentの情報を表示 Environmentタイプ できること Owner 管理操作(マッピング管理)含む全て member Environment操作以外の全て restiricted 所属するEnvironment内のコンテナ操作 read only 所属するEnvironmentの情報表示のみ
管理者の例(フル権限) ユーザ タイプ できること ユーザA
管理者 管理操作(ユーザ追加、アクセス権操作)含む全て ユーザB ユーザ 自分が所属するEnvironmentの情報を表示 Environmentタイプ できること Owner 管理操作(マッピング管理)含む全て member Environment操作以外の全て restiricted 所属するEnvironment内のコンテナ操作 read only 所属するEnvironmentの情報表示のみ
デプロイ用の例(CIから利用) ユーザ タイプ できること ユーザA
管理者 管理操作(ユーザ追加、アクセス権操作)含む全て ユーザB ユーザ 自分が所属するEnvironmentの情報を表示 Environmentタイプ できること Owner 管理操作(マッピング管理)含む全て member Environment操作以外の全て restiricted 所属するEnvironment内のコンテナ操作 read only 所属するEnvironmentの情報表示のみ
参照用の例(監視ツール等) ユーザ タイプ できること ユーザA
管理者 管理操作(ユーザ追加、アクセス権操作)含む全て ユーザB ユーザ 自分が所属するEnvironmentの情報を表示 Environmentタイプ できること Owner 管理操作(マッピング管理)含む全て member Environment操作以外の全て restiricted 所属するEnvironment内のコンテナ操作 read only 所属するEnvironmentの情報表示のみ
ユーザB ユーザA ユーザB RBAC ユーザ ロール Environment
Rancherクラスタの構成 rancher/server rancher/server rancher/server cattle外部DB 外部バランサ https://rancherXX.uzabase.com Rancher
Agent rancher/agent rancher/agent rancher/agent Rancher Server ・複数台サーバでクラスタ化 ・外部DBで管理情報を永続化 ・管理GUIを提供 ・管理情報(ユーザ、ホスト、レジ ストリ、etc...) ・ユーザコンテナを稼働させるリ ソースを、定義したEnvironmentで 提供 ・必要に応じてホスト追加 Environment(ホスト、ユーザ、オーケストレーション) ホスト 管理
アプリケーションカタログ ・簡単にアプリケーションを展開 ・カテゴリ別に選択 ・カスタマイズ可能
カテゴリ分類検索
ユーザースタックとして 追加される WordPressが起動する
What’s Rancherまとめ メリット ・Docker統合管理ツールとして完成度高い ・HAクラスタがとても簡単に構築できる ・アプリケーションカタログで、簡単にアプリ展開 ・商用利用想定(RBAC、APIの監査ログが取れる等) 注意点 ・外部DBはSPOFなので、別途HAが必要
Table of Contents 1.
Backgrounds 2. Why Rancher 3. What’s Rancher 4. k8s on Rancher 5. DevOps with k8s 6. Monitoring k8s 7. Next Generation
k8s on Rancher •
前述のEnvironmentで説明した通り、Rancherがオーケス トレーションの1つとしてkubernetesを標準でサポートして いる (Version1.8.5@2018/03時点)
k8s on Rancher ・Environmentのオーケストレーションでkubernetesを選択 ・Environmentにホストを追加すると、インフラストラクチャー スタックとして、RancherAgentにkubernetesが展開される
k8s on Rancherクラスタ Rancher
Agent rancher/agent rancher/agent rancher/agent Environment(ホスト、ユーザ、オーケストレーション) インフラストラクチャースタック ネットワーク/CNI(Container Networking Interface)、Rancher内部DNS インフラストラクチャースタック kubernetes(etcd、kubelet、master、proxy、kubectld、dashboard) インフラストラクチャースタック kubernetes-ingress(namespace毎のingress or service) k8s外部のシステム
kube-proxy(全台で稼働) master(kube-api) kubelet(全台で稼働) etcd(3台で稼働)
凡例 ホスト毎でのコンテナ配備状況 etcd(3台で稼働) kubelet(全台で稼働) master(kube-api) kube-proxy(全台で稼働) kubernetesスタック
安定稼働のための工夫(etcdの専用化) etcd用ホストはアプリを配備させてない(cordon)
正常にk8sスタックが展開されるとダッ シュボードが表示可能 (この先はkubernetesの世界)
管理GUIから、kubectl を実行できる (権限があるユーザのみ)
k8s on Rancherクラスタ Rancher
Agent rancher/agent rancher/agent rancher/agent Environment(ホスト、ユーザ、オーケストレーション) インフラストラクチャースタック ネットワーク/CNI(Container Networking Interface)、Rancher内部DNS インフラストラクチャースタック kubernetes(etcd、kubelet、master、proxy、kubectld、dashboard) インフラストラクチャースタック kubernetes-ingress(namespace毎のingress or service) k8s外部のシステム
Ingress of k8s
on Rancher ・k8s外からアクセスするためにIngressでホストにポートを リッスンさせる ・デフォルトでは80番ポートのため、ポートを変更する必要が ある ・実体としては、Rancher側でhaproxyが起動して連携してい る
(おさらい)SPEEDAの利用方法 Ingress経由で k8s外システムから アクセス ここを詳細に拡大
k8s rancher rancher Pod:5000 backend rancher agent /
network Node01(10.XX.XX.100)IP (haproxy) Ingress:30080 Pod:8080 front NameSpace FuncA (haproxy) Ingress:40080 NameSpace FuncB rancher agent / network Node02(10.XX.XX.200) k8s外部LoadBalancer Service:8080 front-svc Service:5000 backend-svc (haproxy) Ingress:30080 NameSpace FuncA (haproxy) Ingress:40080 NameSpace FuncB k8sスタック(kubelet、etcd、kube-api、ingress-controller等) Pod:5000 backend Pod:8080 front Service:8000 front-svc Service:4000 backend-svc Pod:5000 backend Pod:8080 front Service:8080 front-svc Service:5000 backend-svc Pod:5000 backend Pod:8080 front Service:8000 front-svc Service:4000 backend-svc Ingress (haproxy) 経由で k8s外部から アクセス ポート変更 NameSpace で分離
k8s rancher rancher Pod:5000 backend rancher agent /
network Node01(10.XX.XX.100)IP (haproxy) Ingress:30080 Pod:8080 front NameSpace FuncA (haproxy) Ingress:40080 NameSpace FuncB rancher agent / network Node02(10.XX.XX.200) k8s外部LoadBalancer Service:8080 front-svc Service:5000 backend-svc (haproxy) Ingress:30080 NameSpace FuncA (haproxy) Ingress:40080 NameSpace FuncB k8sスタック(kubelet、etcd、kube-api、ingress-controller等) Pod:5000 backend Pod:8080 front Service:8000 front-svc Service:4000 backend-svc Pod:5000 backend Pod:8080 front Service:8080 front-svc Service:5000 backend-svc Pod:5000 backend Pod:8080 front Service:8000 front-svc Service:4000 backend-svc kind: Ingress metadata: name: FuncA-ingress namespace: FuncA annotations: io.rancher.scheduler.global: “true” #全NodeでIngress起動 http.port: “30080” # 変更するポート spec: rules: - http: paths: - path: /web backend: serviceName: front-svc servicePort: 8080 - path: /v2/api backend: serviceName: backend-svc servicePort: 5000
k8s on Rancherまとめ メリット ・非常に簡単にk8sクラスタを構築できる ・ユーザ管理/アクセス制限も可能 注意点 ・etcdも展開されるので、ケアが必要
Table of Contents 1.
Backgrounds 2. Why Rancher 3. What’s Rancher 4. k8s on Rancher 5. DevOps with k8s 6. Monitoring k8s 7. Next Generation
DevOps with k8s ・k8s環境でのCI/CD ・Blue/Greenデプロイ ・苦労したところ
ローカル環境で開発 Push Pull ローカルPCのminikubeで高速 に開発を回すことができる
Blue/Greenを バランサで切替 開発k8sに e2eテスト環境をデ プロイ 自動テストを実行 本番k8sの Blue環境にデプロイ kubectl + Shell Script kubectl + Shell Script
k8s rancher rancher Pod:5000 backend rancher agent /
network Node01(10.XX.XX.100)IP (haproxy) Ingress:30080 Pod:8080 front NameSpace Blue (haproxy) Ingress:40080 NameSpace Green rancher agent / network Node02(10.XX.XX.200) k8s外部LoadBalancer Service:8080 front-svc Service:5000 backend-svc (haproxy) Ingress:30080 NameSpace Blue (haproxy) Ingress:40080 NameSpace Green k8sスタック(kubelet、etcd、kube-api、ingress-controller等) Pod:5000 backend Pod:8080 front Service:8000 front-svc Service:4000 backend-svc Pod:5000 backend Pod:8080 front Service:8080 front-svc Service:5000 backend-svc Pod:5000 backend Pod:8080 front Service:8000 front-svc Service:4000 backend-svc バランサで Blue/Greenの Ingressに 切り替え NameSpace で分離
苦労したところ ・プロキシが多い ・k8sのアロケーション ・シェルスクリプトが多い
プロキシが多い 構成上プロキシが多段になるため、トラブルシュート時の切り分けに注意 (例)Timeout設定を延ばしたが切断される 外部LB Ingress Kong App 300sec 300sec
60sec 200sec timeout 504 Gateway Timeout
k8sのアロケーション 開発環境のk8sでリソース逼迫しそうなノードにコンテナが配置されて、OOMKiller が発動 →コンテナ側でメモリ確保を設定した resources: requests: memory: XXGi
シェルスクリプトが多い kubectlを利用するため、用途毎に様々なシェルスクリプトが生まれた ・ビルド、テスト、デプロイ等で127個 ⇒envsubst でテンプレートから設定を生成するように、高機能・共通化した
apiVersion: extensions/v1beta1 kind: Deployment metadata: name:
hoge namespace: ${NAMESPACE} spec: replicas: 1 template: metadata: labels: name: hoge spec: containers: - name: hoge image: docker-registry.uzabase.com/hoge ports: - containerPort: 5555 テンプレート 生成スクリプト(抜粋) configuration=".template.yml" # テンプレートから envsubst で環境変数を置き換えて、設定生成 cat ${template} | envsubst > "${configuration}" # 既存設定を削除 kubectl delete -f "${configuration}" || true # 設定反映 kubectl create -f "${configuration}" # 生成した設定を削除 rm -f "${configuration}" 設定をカスタマイズしつつ、 k8sの不要設定や不要ファイルを残さない
1. Backgrounds 2. Why
Rancher 3. What’s Rancher 4. k8s on Rancher 5. DevOps with k8s 6. Monitoring k8s 7. Next Generation Table of Contents
Monitoring k8s 監視基盤としてPrometheusを採用 ・ServiceDiscoveryできる ・k8sで増減するコンテナに追従 ・監視性能が高く、高頻度で収集できる ・1台で800k処理(10秒間隔×1万) ・PromQLで柔軟にクエリが書ける
大まかな流れ ・k8sにNamespace作成(metrics) ・k8sにNode-exporter、Prometheusをデプロイ ・k8sの各ノードで収集 ・データ保存期間は24時間 ・k8s外のPrometheusからfederationで収集 ・Grafanaで表示 ・詳細は弊社テックブログを参照ください! http://tech.uzabase.com/entry/2018/03/14/200512
Prometheus Monitoring構成 k8s cluster App
pods node node node App pods App pods Node Exporter federation datasource PrometheusAlertmanager $ kubectl describe deployment prometheus --namespace=metrics Args: --config.file=/mnt/etc/prometheus.yml --storage.tsdb.retention=24h --web.external-url=$(EXTERNAL_URL)/prometheus
Alert example groups: - name:
mem-usage.rules rules: - alert: NodeMemoryUsage expr: ( ( ( node_memory_MemTotal - node_memory_MemFree - node_memory_Cached ) / ( node_memory_MemTotal ) * 100)) > 85 for: 2m labels: severity: page annotations: DESCRIPTION: '{{$labels.instance}}: Memory usage is above 85% (current value is: {{ $value }})' SUMMARY: '{{$labels.instance}}: High memory usage detected' mem-usage.rules.yml
Table of Contents 1.
Backgrounds 2. Why Rancher 3. What’s Rancher 4. k8s on Rancher 5. DevOps with k8s 6. Monitoring k8s 7. Next Generation
Istio導入 ・トラフィック調整しながらデプロイ ・Warm-up後にサービス投入 ・新機能のβリリースのみ振り分け ・特定Headerだけを別のサービスに送る ・細やかなRBACでアクセス制御 ・Namespace,Service,Pod,Method単位で制御
ROOK導入 Cephをストレージ仮想基盤としてk8sへ統合 ・分散ストレージで可用性アップ ・データ量に合わせた柔軟でリニアな増強 ・データソースもk8sにデプロイ可能
まとめ
k8s on Rancherの導入効果(Dev) リリース回数10倍! 1回/週
→ 10回/週(Blue/Greenデプロイ) 開発効率200%UP! フルセットe2eテスト環境が簡単にデプロイできる ・データソース(DB,ES,FileServer) ・従来のAPサーバ(モノリシックな部分) ・自動テスト環境(Gauge) ・外部サービスのダミーサーバ(API、FTP、Mail等)
k8s on Rancherの導入効果(SRE) k8s運用の知見が得られた ・監視環境の整備が進んだ(Prometheus,Grafana) ・コードで構成管理(Ansible+kubectl) バッチ処理のk8sが進んだ ・従来はジョブスケジューラから、バッチ専用サーバで実行 ・k8sのCronJobに移行 ・実行される環境を意識せず、定期処理を実行できる ・バッチ環境としての可用性もアップ
ありがとうございました
Advertisement