우분투22.04 버전 4대의 가상 서버 준비
master : 10.0.100.2
node1: 10.0.100.3
node2: 10.0.100.4
node3: 10.0.100.5
template : 10.0.100.6 /* 쿠버네티스 작업하다 오류 발생시 복원용 */
총 4개의 가상서버를 준비하여야 하는데
일단 한개의 서버만 복제하여 쿠버네티스 master 정보를 셋팅한다. 마스터가 잘 셋팅이 되면 node서버는 마스터 복제하여 쉽게 구성할 수 있다. 마스터 서버 셋팅이 에러가 없이 잘되면 되는데 버전 문제가 많아서 잘 안된다. 몇번 시도 끝에 현재 버전에서 잘되는 방법으로 정리 하였다.
/* 현재 버전은 도커를 별도로 설치 할 필요가 없다. 기존 방식대로 도커를 설치 했다가 꼬이는것 같아서 공식문서를 보면서 작성 하였다. */
/* 가상서버 종료후 복제를 한다 */
복제후 서버를 실행시킨후에 호스트 네임과 아이피를 변경한다.
/* 호스트 네임 변경 */
sudo hostnamectl set-hostname master
/* 아이피 변경 */
vi /etc/netplan/00-installer-config.yaml
master 서버는 : 10.0.100.2 번 아이피로 변경
> netplan apply
아이피 적용(아이피 확인)
> ifconfig
- 워크노드 3개를 복제한다.
7. Worker node 구성(only worker)
1) worknode1 서버에 접속하여 아이피와 호스트명을 변경한다.
cd /etc/netplan
vi 00-installer-config.yaml
netplan apply
hostnamectl set-hostname node1
vi /etc/hosts
sudo hostnamectl set-hostname node2
sudo hostnamectl set-hostname node3
위와 동일한 방법으로 수정한다.
/* 쿠버네티스 버전 1.27.9 기준으로 설치 */
/* 작업계정은 root 계정에서 진행 */
/* 공통 마스터, node1,node2,node3 */
쿠버네티스 공식 사이트 : https://v1-27.docs.kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/
1. 메모리 스왑 해제
root@node1:~# free
total used free shared buff/cache available
Mem: 4005720 232608 3159696 1124 613416 3543420
Swap: 4004860 0 4004860
root@node1:~# swapoff -a
root@node1:~# sed -i '/swap/s/^/#/' /etc/fstab
root@node1:~# free
total used free shared buff/cache available
Mem: 4005720 230648 3161584 1124 613488 3545372
Swap: 0 0 0
root@node1:~# reboot
swap 항목이 0으로 변경 되었으면 재 부팅한다.
2. cgoup 확인
mount 명령으로 cgroup를 확인 해본다.
root@node1:~# mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
udev on /dev type devtmpfs (rw,nosuid,relatime,size=1944940k,nr_inodes=486235,mode=755,inode64)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,noexec,relatime,size=400576k,mode=755,inode64)
/dev/mapper/ubuntu--vg-ubuntu--lv on / type ext4 (rw,relatime)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,inode64)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k,inode64)
cgroup2 on /sys/fs/cgroup type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate,memory_recursiveprot)
맨아래 cgroup2가 설정 되어 있다. 쿠버네티스 공식문서에 cgroupDriver을 systemd로 설정해서 사용하라고 나온다.
https://v1-27.docs.kubernetes.io/docs/setup/production-environment/container-runtimes/
위에 문서에 나온대로 컨테이너 런타임을 설치하기 위해서 iptables가 브리지된 트랙픽을 허용할수 있게 설정한다.
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
sudo modprobe overlay
sudo modprobe br_netfilter
# sysctl params required by setup, params persist across reboots
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF
# Apply sysctl params without reboot
sudo sysctl --system
- 다음 명령을 실행하여 모듈이 로드 되었는지 확인
lsmod | grep br_netfilter
lsmod | grep overlay
- 다음 명령을 실행하여 구성에 , net.bridge.bridge-nf-call-iptables및 net.bridge.bridge-nf-call-ip6tables시스템 net.ipv4.ip_forward변수가 로 설정되어 있는지 확인하세요 .1sysctl
sysctl net.bridge.bridge-nf-call-iptables net.bridge.bridge-nf-call-ip6tables net.ipv4.ip_forward
1) containerd 설치
apt install -y containerd
systemctl status containerd
2) containerd 환경설정 파일 셋팅
mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
vi /etc/containerd/config.toml
137 라인 SystemdCgroup 을 true로 변경
SystemdCgroup = true
3) 재기동
systemctl restart containerd.service
systemctl status containerd.service
3. kubadmin으로 설치
https://v1-27.docs.kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/
/* 문서는 영문 문서로 설치 해야 함. 한글문서 따라 했다가 문서가 버전 업데이트가 안되었는지 에러가 발생해서 문서는 영문으로 */
1) apt 업데이트
sudo apt-get update
# apt-transport-https may be a dummy package; if so, you can skip that package
sudo apt-get install -y apt-transport-https ca-certificates curl
2) 구글의 공개 사이닝 키를 다운로드 한다.
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.27/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
3) 저장소 추가
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.27/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
4) 업데이트 및 kubeadm 설치
- 설치 가능한 버전 확인
apt-get update
apt-cache madison kubeadm
root@node1:~# apt-cache madison kubeadm
kubeadm | 1.27.9-1.1 | https://pkgs.k8s.io/core:/stable:/v1.27/deb Packages
kubeadm | 1.27.8-1.1 | https://pkgs.k8s.io/core:/stable:/v1.27/deb Packages
kubeadm | 1.27.7-1.1 | https://pkgs.k8s.io/core:/stable:/v1.27/deb Packages
kubeadm | 1.27.6-1.1 | https://pkgs.k8s.io/core:/stable:/v1.27/deb Packages
kubeadm | 1.27.5-1.1 | https://pkgs.k8s.io/core:/stable:/v1.27/deb Packages
kubeadm | 1.27.4-1.1 | https://pkgs.k8s.io/core:/stable:/v1.27/deb Packages
kubeadm | 1.27.3-1.1 | https://pkgs.k8s.io/core:/stable:/v1.27/deb Packages
kubeadm | 1.27.2-1.1 | https://pkgs.k8s.io/core:/stable:/v1.27/deb Packages
kubeadm | 1.27.1-1.1 | https://pkgs.k8s.io/core:/stable:/v1.27/deb Packages
kubeadm | 1.27.0-2.1 | https://pkgs.k8s.io/core:/stable:/v1.27/deb Packages
apt-cache search kubelet
root@node1:~# apt list -a kubeadm
Listing... Done
kubeadm/unknown 1.27.9-1.1 amd64
kubeadm/unknown 1.27.8-1.1 amd64
kubeadm/unknown 1.27.7-1.1 amd64
kubeadm/unknown 1.27.6-1.1 amd64
kubeadm/unknown 1.27.5-1.1 amd64
kubeadm/unknown 1.27.4-1.1 amd64
kubeadm/unknown 1.27.3-1.1 amd64
kubeadm/unknown 1.27.2-1.1 amd64
kubeadm/unknown 1.27.1-1.1 amd64
kubeadm/unknown 1.27.0-2.1 amd64
kubeadm/unknown 1.27.9-1.1 arm64
kubeadm/unknown 1.27.8-1.1 arm64
kubeadm/unknown 1.27.7-1.1 arm64
kubeadm/unknown 1.27.6-1.1 arm64
kubeadm/unknown 1.27.5-1.1 arm64
kubeadm/unknown 1.27.4-1.1 arm64
kubeadm/unknown 1.27.3-1.1 arm64
kubeadm/unknown 1.27.2-1.1 arm64
kubeadm/unknown 1.27.1-1.1 arm64
kubeadm/unknown 1.27.0-2.1 arm64
kubeadm/unknown 1.27.9-1.1 ppc64el
kubeadm/unknown 1.27.8-1.1 ppc64el
kubeadm/unknown 1.27.7-1.1 ppc64el
kubeadm/unknown 1.27.6-1.1 ppc64el
kubeadm/unknown 1.27.5-1.1 ppc64el
kubeadm/unknown 1.27.4-1.1 ppc64el
kubeadm/unknown 1.27.3-1.1 ppc64el
kubeadm/unknown 1.27.2-1.1 ppc64el
kubeadm/unknown 1.27.1-1.1 ppc64el
kubeadm/unknown 1.27.0-2.1 ppc64el
kubeadm/unknown 1.27.9-1.1 s390x
kubeadm/unknown 1.27.8-1.1 s390x
kubeadm/unknown 1.27.7-1.1 s390x
kubeadm/unknown 1.27.6-1.1 s390x
kubeadm/unknown 1.27.5-1.1 s390x
kubeadm/unknown 1.27.4-1.1 s390x
kubeadm/unknown 1.27.3-1.1 s390x
kubeadm/unknown 1.27.2-1.1 s390x
kubeadm/unknown 1.27.1-1.1 s390x
kubeadm/unknown 1.27.0-2.1 s390x
/* 버전 명시해서 설치 */
apt-get install -y kubelet=1.27.9-1.1 kubeadm=1.27.9-1.1 kubectl=1.27.9-1.1
apt-mark hold kubelet kubeadm kubectl
/* master 만 */
kubeadm init --apiserver-advertise-address 10.0.100.2 --pod-network-cidr=10.1.0.0/16
/* 설치 옵션 apiserver-advertise-address 마스터 서버 아이피,
pod-network-cidr 는 내부 pod 아이피 대역 설정 */
Your Kubernetes control-plane has initialized successfully!
To start using your cluster, you need to run the following as a regular user:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Alternatively, if you are the root user, you can run:
export KUBECONFIG=/etc/kubernetes/admin.conf
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
https://kubernetes.io/docs/concepts/cluster-administration/addons/
Then you can join any number of worker nodes by running the following on each as root:
kubeadm join 10.0.100.2:6443 --token jrcvwk.readw1ehq1etejgp \
--discovery-token-ca-cert-hash sha256:e30d06efd1b53dc2fa59b0a349a972a21f74fac76e817ed92a67b905d1e497e8
이렇게 나오면 master에 쿠버네티스 설치 완료
마스터에서 만 실행시킨다.
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
export KUBECONFIG=/etc/kubernetes/admin.conf
실행하여 준다.
/* node 서버에서는 마스터에서 생성된 토큰을 실행시켜 주면 조인이 된다 */
kubeadm join 10.0.100.2:6443 --token jrcvwk.readw1ehq1etejgp \
--discovery-token-ca-cert-hash sha256:e30d06efd1b53dc2fa59b0a349a972a21f74fac76e817ed92a67b905d1e497e8
5) 설치 확인
kubectl get nodes
이렇게 실행 시키면 NotReady 상태로 표시된다.
cni를 설치 해 줘야 한다.
쿠버네티스 실행 확인
- 마스터에서
watch kubectl get nodes -o wide
watch -n 1 kubectl get all -n calico-system
4. 칼리코 cni 설치 (마스터에만 설치한다.)
https://docs.tigera.io/calico/3.26/getting-started/kubernetes/quickstart
cni를 바로 설치 하지 않고 다운 받아서 편집후 설치한다.
mkdir cni
cd cni
root@master:~/cni# pwd
/root/cni
root@master:~/cni#
사용자 정의 파일을 다운 받아서 pod 내부 대역대 cidr 부분을 수정한다.
1. 설치
wget https://raw.githubusercontent.com/projectcalico/calico/v3.26.4/manifests/tigera-operator.yaml
2. 필요한 설치 참조
wget https://raw.githubusercontent.com/projectcalico/calico/v3.26.4/manifests/custom-resources.yaml
root@master:~/cni# ll
total 1456
drwxr-xr-x 2 root root 4096 1월 5 08:32 ./
drwx------ 7 root root 4096 1월 5 09:48 ../
-rw-r--r-- 1 root root 821 1월 5 08:32 custom-resources.yaml
-rw-r--r-- 1 root root 1475581 1월 5 08:29 tigera-operator.yaml
vi custom-resources.yaml
- 설치한다.
kubectl create -f tigera-operator.yaml
kubectl create -f custom-resources.yaml
/* 칼리코 설치중 문제가 있어서 삭제 할려면 */
/* 삭제 방법 */
kubectl delete -f custom-resources.yaml
kubectl delete -f tigera-operator.yaml
설치 확인
kubectl get all -n calico-system
root@master:~/cni# kubectl get all -n calico-system
NAME READY STATUS RESTARTS AGE
pod/calico-kube-controllers-79cc476bf-flc6b 1/1 Running 0 73m
pod/calico-node-xpcrx 1/1 Running 0 73m
pod/calico-typha-656dfdcbb7-tfbc6 1/1 Running 0 73m
pod/csi-node-driver-glsbc 2/2 Running 0 73m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/calico-kube-controllers-metrics ClusterIP None <none> 9094/TCP 71m
service/calico-typha ClusterIP 10.101.200.13 <none> 5473/TCP 73m
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
daemonset.apps/calico-node 1 1 1 1 1 kubernetes.io/os=linux 73m
daemonset.apps/csi-node-driver 1 1 1 1 1 kubernetes.io/os=linux 73m
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/calico-kube-controllers 1/1 1 1 73m
deployment.apps/calico-typha 1/1 1 1 73m
NAME DESIRED CURRENT READY AGE
replicaset.apps/calico-kube-controllers-79cc476bf 1 1 1 73m
replicaset.apps/calico-typha-656dfdcbb7 1 1 1 73m
이렇게 Runnung 상태이면 정상 설치가 되었다.
kube-system도 정상적으로 기동 되는지 확인한다.
kubectl get all - n kube-system
root@master:~/cni# kubectl get all -n kube-system
NAME READY STATUS RESTARTS AGE
pod/coredns-5d78c9869d-b6xlj 1/1 Running 0 100m
pod/coredns-5d78c9869d-mv7fx 1/1 Running 0 100m
pod/etcd-master 1/1 Running 0 101m
pod/kube-apiserver-master 1/1 Running 0 101m
pod/kube-controller-manager-master 1/1 Running 0 101m
pod/kube-proxy-pvqgp 1/1 Running 0 100m
pod/kube-scheduler-master 1/1 Running 0 101m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 100m
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
daemonset.apps/kube-proxy 1 1 1 1 1 kubernetes.io/os=linux 100m
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/coredns 2/2 2 2 100m
NAME DESIRED CURRENT READY AGE
replicaset.apps/coredns-5d78c9869d 2 2 2 100m
5. 단축키 설정
https://kubernetes.io/docs/reference/kubectl/quick-reference/
검색어 : autocomplete
source <(kubectl completion bash) # set up autocomplete in bash into the current shell, bash-completion package should be installed first.
echo "source <(kubectl completion bash)" >> ~/.bashrc # add autocomplete permanently to your bash shell.
- 단축키 사용방법은
kubectl get no 탭키 앞에 몇자리 입력하고 탭키 누르면 나머지 뒷자리가 자동으로 채워진다.
- 방화벽 비활성(방화벽이 설정되어 있으면)
sudo ufw disable
/* 쿠버네티스 삭제 */
/* 쿠버네티스 완전삭제 */
systemctl stop kubelet
systemctl disable kubelet
kubeadm reset
rm -rf /etc/kubernetes /var/lib/kubelet /var/lib/etcd
apt remove -y kubeadm kubectl kubernetes-cni kubelet kube*
apt autoremove
apt purge kubeadm kubectl kubernetes-cni kubelet kube*
rm -rf /var/lib/cni/
rm -rf /var/lib/kublet/*
rm -rf /var/liv/etcd/
rm -rf /run/flannel
rm -rf /etc/cni/
rm -rf /etc/kubernetes
rm -rf ~/.kube
/* containerd 다시 시작 */
systemctl restart containerd
이상으로 우분투 22.04 버전에 쿠버네티스 설치가 완료 되었다.
/* kubectl 정보 확인 명령어 */
- 클러스터 정보
kubectl cluster-info
kubectl get nodes
kubectl get namespaces
kubectl -n kube-system get pod
kubectl -n calico-system get pod
kubectl -n calico-apiserver get pod
kubectl get pods -A
/* work node에 join 할때 마스터에서 생성된 토큰이 만료 되었을 경우 새로 생성하여 조인한다. */
1) token 값 확인
kubeadm token list
2) 토큰이 만료된 경우 token 생성
kubeadm token create
3) Hash값 확인
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
4) token, hash 값으로 워커노드에 조인하기
kubeadm join 10.0.100.2:6443 --token <Token 값> --discovery-token-ca-cert-hash sha256:<Hash 값>
kubeadm join 10.0.100.2:6443 --token nj9tir.96sgj53f4q5gkt5h \
--discovery-token-ca-cert-hash sha256:e30d06efd1b53dc2fa59b0a349a972a21f74fac76e817ed92a67b905d1e497e8
5) 토큰 삭제
kubeadm token delete 토큰이름
6) 토큰 발행
kubeadm token create --print-join-command
/* 쿠버네티스 설치 순서 버전 1.29로 설치 */
hostnamectl set-hostname master
hostnamectl set-hostname node1
hostnamectl set-hostname node2
hostnamectl set-hostname node3
vi /etc/netplan/00-installer-config.yaml
netplan apply
10.0.100.2 master
10.0.100.3 node1
10.0.100.4 node2
10.0.100.5 node3
swapoff -a
sed -i '/swap/s/^/#/' /etc/fstab
reboot
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
sudo modprobe overlay
sudo modprobe br_netfilter
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF
sudo sysctl --system
lsmod | grep br_netfilter
lsmod | grep overlay
sysctl net.bridge.bridge-nf-call-iptables net.bridge.bridge-nf-call-ip6tables net.ipv4.ip_forward
apt install -y containerd
mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
vi /etc/containerd/config.toml
137 라인 SystemdCgroup 을 true로 변경
SystemdCgroup = true
systemctl restart containerd.service
systemctl status containerd.service
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl gpg
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.29/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.29/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
apt-cache madison kubeadm
apt-get install -y kubelet=1.29.0-1.1 kubeadm=1.29.0-1.1 kubectl=1.29.0-1.1
apt-mark hold kubelet kubeadm kubectl
/* master 만 */
kubeadm init --apiserver-advertise-address 10.0.100.2 --pod-network-cidr=10.1.0.0/16
/* node에만 */
kubeadm join 10.0.100.2:6443 --token y5j5t9.vxjor94djucrq8m1 --discovery-token-ca-cert-hash sha256:cc43e9d2d6681a6851da9ebf32885c3e4dd140c72c3f79be73fab8e9dc149241
kubectl get nodes
/* 쿠버네티스 join 오류가 발생하는 경우가 있음 마스터하고 통신이 안됨 통신 확인 필요 에러 발생시 */
curl -k https://10.0.100.2:6443/api/v1/namespaces/kube-public/configmaps/cluster-info?timeout=10s
telnet 10.0.100.2 6443
네트워크 관련 라우팅이 자동 등록이 안되어서 통신이 안되는것 같음 그냥 ping 10.0.100.3 서로간에 ping통신으로 해주니까 연결이 되었음 그리고 설치
/* 칼리코 설치 마스터에서만 */
mkdir cni
wget https://raw.githubusercontent.com/projectcalico/calico/v3.26.4/manifests/tigera-operator.yaml
wget https://raw.githubusercontent.com/projectcalico/calico/v3.26.4/manifests/custom-resources.yaml
vi custom-resources.yaml
아이피 변경 : 10.1.0.0/16
kubectl create -f tigera-operator.yaml
kubectl create -f custom-resources.yaml
/* 설치 확인 */
kubectl get all -n calico-system
watch kubectl get nodes -o wide
/* 단축키 */
source <(kubectl completion bash) # set up autocomplete in bash into the current shell, bash-completion package should be installed first.
echo "source <(kubectl completion bash)" >> ~/.bashrc # add autocomplete permanently to your bash shell.
/* crictl 버전 확인 */
crictl version
root@master:~/cni# crictl version
WARN[0000] runtime connect using default endpoints: [unix:///var/run/dockershim.sock unix:///run/containerd/containerd.sock unix:///run/crio/crio.sock unix:///var/run/cri-dockerd.sock]. As the default settings are now deprecated, you should set the endpoint instead.
ERRO[0000] validate service connection: validate CRI v1 runtime API for endpoint "unix:///var/run/dockershim.sock": rpc error: code = Unavailable desc = connection error: desc = "transport: Error while dialing: dial unix /var/run/dockershim.sock: connect: no such file or directory"
Version: 0.1.0
RuntimeName: containerd
RuntimeVersion: 1.7.2
RuntimeApiVersion: v1
위에처럼 에러 발생시
cat /etc/circtl.yaml 파일이 존재하지 않으면 아래 명령 실행
sudo tee /etc/crictl.yaml > /dev/null <<EOF
runtime-endpoint: unix:///var/run/containerd/containerd.sock
image-endpoint: unix:///var/run/containerd/containerd.sock
timeout: 2
debug: true
pull-image-on-create: false
EOF
'시스템 > 쿠버네티스' 카테고리의 다른 글
[쿠버네티스] 아르고(Argo) cd 설치 (0) | 2024.01.09 |
---|---|
[쿠버네티스] 젠킨스 CI 구성 (0) | 2024.01.09 |
[쿠버네티스] k8s 젠킨스 설치 (0) | 2024.01.09 |
쿠버네티스 대시보드 설치 (0) | 2024.01.08 |
우분투 22.04 버추얼 머신 설치하기 (1) | 2024.01.04 |
댓글