Rust, Kubectl 명령어 실행

Jeonghak Cho·2024년 11월 23일

Rust

목록 보기
8/13

준비

  • kubectl 위치 찾기
    vagrant@slave3:~/workspace/khagor$ which kubectl
    /usr/bin/kubectl

  • kubectl 과 config 파일을 현재 프로젝트로 복사

vagrant@slave3:~/workspace/khagor$ cp ~/.kube/config .
vagrant@slave3:~/workspace/khagor$ cp /usr/bin/kubectl .
vagrant@slave3:~/workspace/khagor$ ls
Cargo.lock  Cargo.toml  config  dockerfile  job.yml  kubectl  README.md  src  target
  • git commit 대상에서 kubectl과 config 파일 포함하기
vagrant@slave3:~/workspace/khagor$ vi .gitignore
target
kubectl
config

RUST 로 Kubectl 호출하기

  • 소스 구현
use std::thread;
use std::process::{Command};
fn main() {
    thread::scope(|s| {
        s.spawn(|| {
            let output = Command::new("kubectl")
            .arg("get")
            .arg("po")

            .output()
            .expect("failed to execute process");
            let stdout = String::from_utf8(output.stdout).unwrap();

            println!("{}", stdout);
        });
    });
}
  • 소스 빌드
vagrant@slave3:~/workspace/khagor$ cargo build --release
   Compiling khagor v0.1.0 (/home/vagrant/workspace/khagor)
    Finished `release` profile [optimized] target(s) in 1.50s

vagrant@slave3:~/workspace/khagor$ ./target/release/khagor
NAME                         READY   STATUS    RESTARTS      AGE
mariadb-0                    1/1     Running   2 (87m ago)   3d
mariadb-1                    1/1     Running   2 (88m ago)   3d
mariadb-2                    1/1     Running   2 (87m ago)   3d
maxscale-1-6ccd8599b-lsnqn   1/1     Running   2 (87m ago)   2d23h
  • kubectl 로 pod 목록 조회
vagrant@slave3:~/workspace/khagor$ k get po
NAME                         READY   STATUS      RESTARTS      AGE
khagor-29qtf                 0/1     Completed   0             61m
mariadb-0                    1/1     Running     2 (81m ago)   3d
mariadb-1                    1/1     Running     2 (82m ago)   3d
mariadb-2                    1/1     Running     2 (80m ago)   3d
maxscale-1-6ccd8599b-lsnqn   1/1     Running     2 (81m ago)   2d23h
  • 도커 이미지 빌드

    도커파일을 통해 kubectl 과 config 파일 이미지에 복사
    vi dockerfile

FROM ubuntu:20.04
WORKDIR /app
COPY  ./target/release /usr/local/bin
COPY kubectl /usr/local/bin
COPY config /app
RUN chmod +x /usr/local/bin/khagor
CMD ["khagor"]
  • 이미지 저장소 PUSH
docker build -t khagor .
docker tag khagor:latest chojeonghak/khagor:0.6
docker push chojeonghak/khagor:0.6

POD 로 실행하기

k run khagor --image=chojeonghak/khagor:0.6

vagrant@slave3:~/workspace/khagor$ k get po -w
NAME                         READY   STATUS      RESTARTS       AGE
khagor                       0/1     Completed   0              8s
mariadb-0                    1/1     Running     2 (129m ago)   3d1h
mariadb-1                    1/1     Running     2 (130m ago)   3d1h
mariadb-2                    1/1     Running     2 (129m ago)   3d1h
maxscale-1-6ccd8599b-lsnqn   1/1     Running     2 (129m ago)   3d
khagor                       0/1     Completed   1 (2s ago)     9s

k delete po khagor

Kubernetes JOB 실행하기

  • job 실행하기

vi myjob.yml

apiVersion: batch/v1
kind: Job
metadata:
  name: khagor
spec:
  template:
    spec:
      containers:
      - name: khagor
        image: chojeonghak/khagor:0.6
      restartPolicy: Never
  backoffLimit: 5
vagrant@slave3:~/workspace/khagor$ k get po
NAME                         READY   STATUS      RESTARTS       AGE
khagor-7fth5                 0/1     Completed   0              2s
mariadb-0                    1/1     Running     2 (132m ago)   3d1h
mariadb-1                    1/1     Running     2 (133m ago)   3d1h
mariadb-2                    1/1     Running     2 (131m ago)   3d1h
maxscale-1-6ccd8599b-lsnqn   1/1     Running     2 (132m ago)   3d
vagrant@slave3:~/workspace/khagor$ k logs khagor-7fth5
NAME                         READY   STATUS              RESTARTS       AGE
khagor-7fth5                 0/1     ContainerCreating   0              1s
mariadb-0                    1/1     Running             2 (132m ago)   3d1h
mariadb-1                    1/1     Running             2 (133m ago)   3d1h
mariadb-2                    1/1     Running             2 (131m ago)   3d1h
maxscale-1-6ccd8599b-lsnqn   1/1     Running             2 (132m ago)   3d

0개의 댓글