Kubernetes2 Advent Calendar 2020 1 日目

この記事は Kubernetes2 Advent Calendar 2020 の 1 日目です。

https://www.mirantis.com/blog/congratulations-to-the-k0s-team-on-their-new-kubernetes-distribution/

みなさんは k?s といったキーワードを聞いた時に何を思い浮かべるでしょうか?

k8s、これは紛れもなく皆さん知っていますよね。Kubernetes を略す時によく使われます。( Kubernetesks の間は 8 文字あることから)

k3s 、これも有名ですよね。Rancher がメインで開発している軽量な Kubnernetes のバイナリです。

k9s 、これは知っている人は知っているんですが terminal 上で Kubernetes をモニタリングしたり、操作したり、いわゆる IDE の機能を提供してくれるものです。便利ですよ!

さて、今日ご紹介するのは k0s です。

(ちな …


どちらかというとクラスター管理者向け

discovery

Kubernetes は様々な label を使うことで Pod 等の様々なリソースを効率よく管理することが出来ます。

Kubernetes の Node も同様に様々な label を付けることが可能です。利用者からすればリソースを Node に配置する時に、意図した Node に配置したいケースもあると思います。その際に Node に適切な label が設定されていて欲しいですよね。

利用者にとっては、例えば「特定の CPU の命令セットが実行できる Node に Pod を配置したい」なんて要望があるかもしれません(AVX2 や FMA3 等)。もしくは「 CPU の model や stepping を選択して配置したい」なんてケースもあるかもしれません。

Kubernetes はデ …


Let’s keep your manifests safe and solid

The result is commented on PR page

Validating your Kubernetes manifests is very important for some security reasons especially in the case of GitOps. Ideally, the validation process should be integrated with your CI workflow.

GitHub Actions

GitHub Actions is powerful and easily setup CI workflow. You can find and use various useful actions that are published at GitHub Marketplace.

Conftest

Conftest helps you write tests for your Kubernetes manifests. Conftest uses the Rego language for writing tests.

The following example is checking whether container(s) uses latest image tag.

check image tag

This example uses extra kubernetes library. See the library and other examples described in instrumenta/policies repository.

And the…


kubeval 編

Kubernetes の Manifests は yaml(もしくはjson) で記述されているのですが、正しい schema で記述されているのか判断したいと思ったことはありませんでしょうか。

例えば値のところに数字を書く時に " で括って strings として書くのか、そのまま int で書くのか迷ったり、いつのまにか indent がずれていた、なんて経験あるのではないでしょうか。

例えばこんな yaml があったとしましょう。

この manifest 内には Kubernetes の schema に合っていない記述が 2 つあります。1 つ目は replicas: の値が strings になっている部分です。この場合は "1" ではなく 1 と書くべきですよね。2 つ目は po …


Kubernetes Advent Calender その2 の 2日目

https://kubernetes.io/docs/tasks/extend-kubectl/kubectl-plugins/

みなさん素敵な Kubernetes ライフを満喫していらっしゃるでしょうか?

Kubernetes ライフに欠かせないのが kubectl なのですが、様々な plugin が世の中には存在しています。これらの plugin を使いこなすことで、Kubernetes ライフが充実することでしょう。今日はそんな plugin をいくつか紹介していこうと思います。

kubectl-grep

これは kubectl get xxx ... | grep hogehoge のようなことを一発でやってくれるものです。label とかで get の出力を filter することは出来るんですけど、時には grep したい場合ってありますよね?

直感的に叩くことが出来るのでとても便利です。現在のところは grep 対象に daemon …


kubectlの plugin の作成の練習を兼ねて

kubectl は pluginを書くことでその機能を独自に拡張することができます。

今回 plugin の書き方を習得する為に、ちょっとした plugin kubectl-dfi を作ってみました。(役に立つとは言っていない😜)

kubectl-dfi

Kubernetes の node で稼働する kubelet はコンテナを実行するわけですが、 kubelet は今どのようなコンテナのイメージを node が保持しているかを内部的に情報として持っています。

kubectl get node node-name -o yaml とか実行すると spec.images に情報が出てくることが分かります。

kubectl-dfi はその情報を分かりやすく表示してくれる plugin だと思って下さい。

Usage

とりあえず叩いてみる

kubectl dfi

ちょっと見難いかもしれませんね。見やすくしてみましょう。


思いついたら更新していきます

いつかどこかで使うかもしれない docker の image を用意しました。主に検証用途ですが、みなさんのお役に立てれば幸いです。

alpine-dig

alpine に dig を入れてある image。dig使いたいんだけど dig を install するのはめんどいなぁという時に

alpine-curl-jq と alpine-git-curl-jq

alpine-dig と同じような image。debug 用のコンテナを気軽に差し込めるようになったら便利に使えるかもしれない。

alpine-stress

stressが入っている image。一時的に CPU やメモリに負荷をかけたい時にどうぞ。何も指定しないで起動した場合は stress --cpu 1 が実行される。

使い所としては負荷をかけて Kubernetes の node や pod のスケールの確認とかしたい時や HPA の確認に役に立つかもしれない。

fat-images

disk が圧迫されたときの挙動とか知りたいなんて思ったことありませんか?それなりに容量が大きくてそこそこ並列で image の layer を取ってこれる image です。tag で容量を変えられます(500m/1G/2G/3G/4G/5G)

上記の場合は実は圧縮された layer を取ってくるのであまり pull に時間がかからないのですが、圧縮が効きにくい binary 版も用意しています。pull に時間がかかる image が欲しいなんて場合は役に立つかもしれませんが network の traffic を食いますのでご注意を。

こちらも tag で容量を変えられます(bin-512m/bin-1g/bin-2g/bin-3g/bin-4g/bin-5g)。用法・容量を守ってお使い下さい。

docker-nginx-hostname

HTTP アクセスすると hostname を返してくる nginx。Kubernetes の svc 配下がちゃんと分散しているか確認する時にどうぞ。HTTPS にも対応しているが、ssl 証明書は適当なので curlする時は -k付けたりしてください


enabling container security with Falco

about Falco

公式 HPContainer Native Runtime Securityと記述されている通り、 Cloud Native な環境におけるセキュリティのモニタリングを実現してくれるソフトウェアです。
Falco を導入すると、可動しているアプリケーションが通常とは違った挙動をしていないか等モニタリングすることができます。
また、検知した際の通知も Slack はもちろん Fluentd や NATS にも対応していて非常に使いやすいです。

deploy Falco to kubernetes cluster

Falco の repository を clone します。

$ git clone https://github.com/falcosecurity/falco

kubernetes の yaml は falco/integrations/k8s-us …


2018/04/19@ベルサール神田

先日 Japan Container Days V18.04 が開催されました。

光栄なことに登壇する機会を頂きましたので「Dockerだけじゃない コンテナ runtime 徹底比較」というタイトルで登壇させて頂きました。

ご来場の皆様にはとても感謝致します。有難うございました。

今回の Japan Container Days は個人的には非常にいい経験をさせて頂きました。主催された Impress 様(特に鈴木さん)にはとても感謝しています。

今までいろいろな所で登壇させて頂きましたが、先日の Japan Container Days は特に印象深いものになりました。

Support Member として

実は今回は Support Memberとしてイベントの企画のお手伝いをしてきました。イベントは大盛況で #containerday …


kubernetes

English post is here

先日 Kubernetesに関して 2 つの脆弱性が発表されました

CVE-2017–1002101
In Kubernetes versions 1.3.x, 1.4.x, 1.5.x, 1.6.x and prior to versions 1.7.14, 1.8.9 and 1.9.4 containers using subpath volume mounts with any volume type (including non-privileged pods, subject to file permissions) can access files/directories outside of the volume, includi …

makocchi

Makoto Hasegawa | kubernetes | CKA(#CKA-1700–0150–0100) | CKAD(CKAD-1800–0005–0100) | docker | container | OpenStack

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store