K8s-one-line-Challenge

잔잔한 호수에 돌맹이는 내가던졌다. K8s의 Service는 selector 에서 지정한 label로 pod에게 트래픽을 흘린다. 그런데 아이러니하게도 service 에서 연결된 pod를 한번에 조회할순 없다. service 에서 selector 나 endpoint를 확인해서 labels 를 보고 확인해야 한다. 그 과정을 한번 보자. my-service1 이라는 서비스에서 사용하는 pod를 조회할꺼다. k get svc -o wide NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR kubernetes ClusterIP 198.19.128.1 <none> 443/TCP 2d13h <none> my-service1 NodePort 198.19.231.233 <none> 80:30001/TCP 2d12h app=my-nginx1 my-service2 NodePort 198.19.172.176 <none> 80:30002/TCP 2d12h app=my-nginx2 my-service3 NodePort 198.19.200.20 <none> 80:30003/TCP 2d12h app=my-nginx3 k get pods -l app=my-nginx1 --show-labels NAME READY STATUS RESTARTS AGE LABELS my-nginx1-67f499d79c-g7vr7 1/1 Running 0 26h app=my-nginx1,pod-template-hash=67f499d79c my-nginx1-67f499d79c-j4f9k 1/1 Running 0 26h app=my-nginx1,pod-template-hash=67f499d79c my-nginx1-67f499d79c-mqxzs 1/1 Running 1 26h app=my-nginx1,pod-template-hash=67f499d79c kubectl. 에서 svc 를 get하고 -o wide 명령어를 쓰면 selector 가보인다. 거기서 get pod -l app=my-nginx1 이라 일일이 지정해줘야지만 확인할수 있다. 명령어 두줄치면 되긴한데 귀찮다. 이렇게 된이상 한줄치기는 물러설수 없다. ...

July 22, 2021 · 5 min · 📁 Linux, Kubernetes

Ping-MTU-test

MTU 9000 이상을 점보프레임이라 부른다. 점포프레임이 정상적으로 전송되는지 확인하는 방법이다. ping -M do -s 1472 google.com PING google.com (172.217.175.110) 1472(1500) bytes of data. 76 bytes from nrt20s21-in-f14.1e100.net (172.217.175.110): icmp_seq=1 ttl=114 (truncated) 76 bytes from nrt20s21-in-f14.1e100.net (172.217.175.110): icmp_seq=2 ttl=114 (truncated) 76 bytes from nrt20s21-in-f14.1e100.net (172.217.175.110): icmp_seq=3 ttl=114 (truncated) 1500에 맞춰서 google로 보내면 정상적으로 간다. ping -M do -s 1473 google.com PING google.com (172.217.175.110) 1473(1501) bytes of data. ^C --- google.com ping statistics --- 45 packets transmitted, 0 received, 100% packet loss, time 43999ms 1501 은 가지 않는다. ...

July 7, 2021 · 1 min · 📁 Linux

linux-sed

일반적으로 sed를 쓸때 나는 sed s/원문/치환/ 파일 이런식으로 사용했다. 그런데 만약에 변경할것이 /var/log 에서 /var/log2로 변경한다면 sed s/₩/var₩/log/₩/var₩/log2/ 파일 이런식으로 sed의 구분자를 회피하기위해 ₩/ 과같은 역슬러쉬를 사용해야 했다. 그런데 오늘 혁신을 맛봤다. sed "s|/var/log|/var/log2|" 파일 / 대신 |를쓰면 ₩/를 일일이 쓸필요가 없다.. 하..지금까지의 내 하드코딩 돌려줘ㅠㅠ 후에 게시물을 공유하고 "In a context address, any character other than a backslash (``\'') or newline character may be used to delimit the regular expression." ...

June 28, 2021 · 1 min · 📁 Linux

kubernetes-CentOS7-install

작년 10월 작성했던 install script가 달라졌다. <#!/bin/sh setenforce 0 sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux swapoff -a modprobe br_netfilter echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo yum install -y docker-ce cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg EOF yum install -y kubelet kubeadm kubectl sed -i "s|ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock|ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --exec-opt native.cgroupdriver=systemd|" /usr/lib/systemd/system/docker.service echo "net.bridge.bridge-nf-call-ip6tables = 1" >> /etc/sysctl.conf echo "net.bridge.bridge-nf-call-iptables = 1" >> /etc/sysctl.conf echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf sysctl -p systemctl enable docker systemctl enable kubelet 큰 틀의 변화라면 작년의 클러스터 설치에선 kubeadm.conf 에서 docker와 kube의 cgroup을 변경해주는 방식이 었다면 근래에는 Docker의 Cgroup를 변경해야한다. ...

June 28, 2021 · 3 min · 📁 Linux, Kubernetes

Basic-Docker

오랜만의 블로깅이다. 오랜만에 글을 쓰는것은 Docker 다. 간단히 도커 설치부터 이야기를 해보겠다. 나는 Redhat 계열의 리눅스를 좋아하므로 Centos7 로 진행하려 한다. yum 으로 도커를 설치할건데, 몇가지를 선택해야 한다. 도커를 제공하는 레포는 여러가지가 있는데, 나는 Centos 의 Extra repo를 좋아한다. 다른레포를 사용하지 않고 그냥 바로 설치 할수 있기 때문이다. https://docs.docker.com/engine/install/centos/ 다음 URL을 참고하자. 물론 최신버전과는 거리가 좀 많다. Extra repo 는 1.13버전을 제공하며, 현재 Docker-ce repo에서 제공하는 버전은 1.20다. Docker를 사용하기 위해선 6개의 패키지가 필요하다. ...

June 19, 2021 · 3 min · 📁 Linux

Linux-one-line-Challenge

리눅서들은 이상한 것에 집착하곤 한다. 한줄 명령어가 그 중 하나이다. 보통 그렇다. 이런 아무렇지 않은 질문으로 시작한다. 질문은 곧 챌린지가 되고 도전이 시작된다. 적당히 조언했던것이.. 다른 분의 참전으로 새로운 측면을 맞이한다. ls -lt 는 시간순 정렬이다. 대충이라고 하셨지만 골자는 이렇다. ls -ptl 은 파일의 최신순서대로 정렬해서 보여준다. 거기에 / 디렉토리를 빼고 토탈을 빼는 방식이다. 물론 이런것들이 한방에 되진 않는다. 여러 가지 조언을했지만 사실 말처럼 쉽게 되지 않는다. 그저 제한사항 들을 확인하는 것이다. ...

April 7, 2021 · 1 min · 📁 Linux · 🏷️ shell, linux, bash

Linux-bashtop

bashtop&bpytop 이 핫해서 centos 7 에서 설치했습니다. bashtop 은 bash 4.4 이상 bpytop는 python3이상입니다. 오늘 저는 bashtop를 사용해볼까 합니다. 먼저 bash 5.0을 설치 하려 합니다. cd /usr/local/src/ wget http://ftp.gnu.org/gnu/bash/bash-5.0.tar.gz tar zxvf bash-5.0.tar.gz cd bash-5.0/ ./configure && make && make install mv /bin/bash /bin/bash.bak ln -s /usr/local/bin/bash /bin/bash [root@linuxer src]# bash -version GNU bash, version 5.0.0(1)-release (x86_64-pc-linux-gnu) 그래서 bash 를 다운받고 컴파일 해줬습니다. 기존 bash 는 4.2 버전이라 bash.bak 으로 변경해 문제가 생기면 언제든 사용할수 있도록 만들었습니다. ...

December 31, 2020 · 1 min · 📁 Linux

terraform-provider-ncloud-review

오늘 하시코프x네이버클라우드 웨비나에서 terraform 과 Vault 에 대한 웨비나를 청취했습니다. https://github.com/NaverCloudPlatform/terraform-provider-ncloud 이전에 방과후(?) meetup에서 네이버클라우드가 테라폼의 프로바이더로 있다는것을 알았습니다. 그 덕분에 네이버클라우드에서 terraform은 이미 경험이 있는 상태고, Vault도 경험이 있었습니다. 오늘의 주제 중 Secrets Engines이 궁금했습니다. https://www.vaultproject.io/docs/secrets Secrets engines are components which store, generate, or encrypt data. 시크릿엔진은 데이터를 저장또는 생성하고 암호화하는 구성요소. AWS 의 Parameter Store / Secrets Manager 와 비슷한 기능을 한다고 생각이 들었습니다. 다른 벤더에서도 비슷한 서비스들이 있습니다. ...

November 20, 2020 · 1 min · 📁 Linux, 기타, NCP · 🏷️ ncp, vault, navercloud

linux-port-range-reuse

https://www.cyberciti.biz/tips/linux-increase-outgoing-network-sockets-range.html https://meetup.toast.com/posts/55 http://docs.likejazz.com/time-wait/ tcp port range는 32768에서 61000까지다 대략 28000개의 가용포트가 있다는것이다. 클라이언트로서 28000개의 가용포트를 모두사용하게되면? 더이상의 새로운 TCP 세션을 생성할수 없게된다. #tcp port range echo 10240 60999 > /proc/sys/net/ipv4/ip_local_port_range 그래서 일단 10240 - 60999 개의 포트를 사용할수 있도록 수정해줬다. 예약포트들은 포통 10240 아래로 포진되어 있고, 61000 포트위로는 패시브 포트로 사용하는경우가 많으므로 일단 10240-61000포트를 사용할수 있도록 수정했다. 50000개 가량의 포트를 사용가능하도록 수정한거다. 그래도 해결이안되는듯 했다. [root@linuxer ~]# netstat -an | grep TIME_WAIT | wc -l 51314 두배 이상의 port range 에도 처리가 불가능한 수준이었던것.. ...

November 19, 2020 · 2 min · 📁 Linux

DNS-spf-google

spf 레코드는 RFC 4408 의해서 255 characters으로 제한된다. 하나의 레코드가 255 characters 라는 이야기다. 그래서 255 characters 이상을 쓰려면 어떻게 해야할까? 그것을 구글의 사용 예를 들어서 설명하고자 한다. google.com text = "v=spf1 include:_spf.google.com ~all" _spf.google.com 도메인을 include 하고 _spf.google.com 도메인을 쿼리하면 _spf.google.com text = "v=spf1 include:_netblocks.google.com include:_netblocks2.google.com include:_netblocks3.google.com ~all" _netblocks.google.com _netblocks2.google.com _netblocks3.google.com 세개의 도메인을 알려준다. 세개의 도메인은 각각의 역할에 따라 ipv4나 ipv6를 응답한다. _netblocks.google.com text = "v=spf1 ip4:35.190.247.0/24 ip4:64.233.160.0/19 ip4:66.102.0.0/20 ip4:66.249.80.0/20 ip4:72.14.192.0/18 ip4:74.125.0.0/16 ip4:108.177.8.0/21 ip4:173.194.0.0/16 ip4:209.85.128.0/17 ip4:216.58.192.0/19 ip4:216.239.32.0/19 ~all" ...

October 13, 2020 · 2 min · 📁 Linux