0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Microk8sとkubernetesの使い方 Fedoraのトラブルシューティング、ssh secret、dns設定付

Last updated at Posted at 2023-06-06

基本

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ではそんなに有効じゃないかも

/etc/docker/daemon.json
{
  "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
./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と出る

確認用

Dockerコンテナでpingコマンドを使いたい

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

/etc/docker/daemon.json
{
  "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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?