基本
Jobs
Run a Stateless Application Using a Deployment
Run a Single-Instance Stateful Application
Expose Pod Information to Containers Through Files
Create a MicroK8s cluster
Add-on dns
Dockerfile
git/build.sh at master · alpine-docker/git
導入
UbuntuにMicroK8sを導入する
useradd, usermod によるグループへの追加
sudo snap install microk8s --classic
でインストール
sudo usermod -aG microk8s me
sudo usermod -aG docker me
ついでにsudoなしでも使えるようにしておこう
microk8s dashboard-proxy
でWebUIにアクセスできる
snapを利用するのでその対処
Installing snap on Fedora
Dockerは容量喰うのでその対処
Microk8sではそんなに有効じゃないかも
{
"data-root": "/mnt/docker-data"
}
Docker daemon configuration overview
docker imageの保存先を変更する
Change Docker root directory /var/lib/docker to another location
サンプル
kind: Job
apiVersion: batch/v1
metadata:
name: git-test72
labels:
app: git-test
spec:
backoffLimit: 1
template:
spec:
containers:
- name: git-test
image: localhost:32000/my-git
command:
- /bin/sh
- '-c'
- git clone git@github.com:Whitecat6142/Whitecat6142.git && cat Whitecat6142/README.md
volumeMounts:
- name: foo
mountPath: "/root/.ssh"
dnsPolicy: "None"
dnsConfig:
nameservers:
- 8.8.8.8
restartPolicy: Never
volumes:
- name: foo
secret:
secretName: my-secret
defaultMode: 0400
commandはJob側で指定する(中身はArray)
kind: Secret
apiVersion: v1
metadata:
name: my-secret
data:
config: SG9zdCBnaXRodWIuY29tCiBJZGVudGl0eUZpbGUgL3Jvb3QvLnNzaC9pZF9yc2E=
id_rsa: >-
base64
id_rsa.pub: >-
base64
known_hosts: >-
base64
type: Opaque
ssh-keyscan github.com >> ./known_hosts
microk8s kubectl create secret generic my-secret --from-file=id_rsa=./id_rsa --from-file=id_rsa.pub=./id_rsa.pub --from-file=known_hosts=./known_hosts --from-file=config=./config
Host github.com
IdentityFile /root/.ssh/id_rsa
kubectlを使用してSecretを管理する
Secret
設定ファイルを使用してSecretを管理する
Secretsで安全にクレデンシャルを配布する
kubectlチートシート
Working with kubectl
Creating ssh secrets key file in kubernetes
A few common k8s secret types examples
defaultModeを指定しない場合セキュリティで弾かれるので注意
JobにSecretをVolumeとしてマウントすることでsshキーを使用可能にしています
Secret内部には.sshフォルダのpubkey,privkey,known hosts,configが入っています
FROM ubuntu:latest
RUN apt-get update && \
apt install -y git ca-certificates iputils-ping && \
rm -rf /var/lib/apt/lists/*
Could not resolve host: github.comと出る
確認用
firewalld
homeのマスカレード+dockerの送信元+デフォルトのゾーンをdockerに
送信元0.0.0.0/24 でうまくいった 10.11.12.0/24 でもいけた
CentOS8にDockerを入れようとして躓いた話
firewall-cmd - add-forward-port don't work - Super User
5.9. Port Forwarding
dns周り
コンテナによってはresolv.confが設定されていないのでyamlで設定している
【docker】コンテナの hosts と resolv.conf を変更する
Alpine on k8sのDNSでハマった話
microk8sハマること(Kube内のDNSが参照できない,証明書
ubuntu19.04でpingとnslookupができなくなり、DNSサーバーを変更するのにめちゃくちゃハマった話
DNS for Services and Pods
Alpineでgit cloneができない時はDNSサーバーを変える
How I can configure my local machine to use a docker hosted dns server alonsside with ant other dns settings for specific domains?
自前のイメージを使いたいとき
方法1
{
"insecure-registries" : ["localhost:32000"]
}
microk8s enable registry
で有効化
microk8s status
で確認
docker build --no-cache -t localhost:36000/my .
でbuild
Working with MicroK8s’ built-in registry
方法2
docker run -d -p 5000:5000 --restart=always --name registry registry:2
docker build --no-cache -t my .
docker tag my localhost:5000/my
docker push localhost:5000/my
もある
How to use local docker images with Minikube?
Experiment with Kubernetes with a custom Docker Image