반응형

 

아래와 같이 `oc edit` 명령으로 insecureRegistries 항목에 Container Image Registry 주소를 추가한다.

 

$  oc edit image.config.openshift.io/cluster

... 중간 생략 ...

spec:
  registrySources:
    insecureRegistries:
    - aaa.cloud.net:8080
    - bbb.cloud.net:5000

... 중간 생략 ...

$

 

그리고 kubernetes node에서 사람이 podman 명령어를 직접 사용하는 경우도 있기 때문에 아래와 같이 /etc/containers/registres.conf 파일에도 registry 주소를 추가한다.

 

##
## File Path:  /etc/containers/registries.conf
##

$  cat  /etc/containers/registries.conf

... 중간 생략 ...

[registries.insecure]
registries = ['aaa.registry.net:8080', 'bbb.registry.net:8080']

... 중간 생략 ...

$
반응형

아이오닉을 구입한지 1년 6개월이 넘은 시점에 리콜(무상 수리)를 받으라는 안내장이 집으로 날라왔다.

기왕 리콜 받으러 가는 거라면, 제대로 정비할 수 있는 곳으로 가는 것이 좋겠다는 생각이 들어서 

현대자동차 직영 서비스 센터인 서울 남부 하이테크센터로 갔다.

금요일 오후 1시에 방문했고,

리콜 예약을 한 상태라서 그런지 센터에 들어가면서 부터 바로 차량 번호가 인식되고, 정비 담당자가 차를 인계받고

정비를 시작했다. 처리 절차가 자동화된 것 같은 느낌적인 느낌~~

 

정비는 3시간이 걸린다고 하여 주변에 다른 볼일을 처리하러 나갔다.

그런데 2시간 30분쯤 지나니까, 내 스마트폰 블루링크 앱에 "급속 충전 시작"이라는 알람이 떴다.

"엇! 벌써 정비 끝나고, 충전까지 해주는 건가?"

라는 생각을 하는 찰라에 정비 담당자로부터 전화가 왔다. 

정비가 끝났단다. 예상시간보다 빨리 끝났네.

 

내가 하이테크센터까지 가는 15분 동안 급속충전을 해주었고,

게다가 워셔액까지 가득 채워줬다. 타이어 공기압 다시 맞추고... 그리고 뭔가 더 서비스로 처리했다고 안내해줬는데....

몇 시간 지나고 글을 쓰려고 보니 다 까먹었네.

 

그리고, 내 차량은 1년 1회씩 7년간 무상 정비를 받을 수 있다고 안내도 받았다.  담당직원이

"왜 작년에 안 오셨어요? 어짜피 1년 1회는 무료인데 오셔서 소모품 같은 거는 무료로 보충해주니까 부담없이 오셔도 됩니다."

라고 했다.

 

암튼, 결론은...   서울 남부 하이테크 센터(직영 서비스 센터)의 서비스는 아주 만족스러웠다.

 

아.. 그리고 정비를 대기하는 동안 안마 무료, 믹스 커피 무료, 전시 차량을 타봐도 되고... 기타 등등 시간 때우기 좋은 것들이 있어서 괜찮았다.

반응형

2020년 이후로 IT 회사의 개발자 연봉이 억, 억 하는 소리가 난다.

그런데 정작 IT 회사에서 20년 일해온 나를 포함해서 주변 지인 IT 개발자(프로그래머)의 연봉이 억을 넘는 경우를 쉽게 볼 수 없다.

동료들 중에는 일부 연봉 1억이 넘는 경우가 있지만, 흔하지 않다.

그럼 누가 1~2억씩 연봉을 받는거지? 라는 생각을 항상 하게 되는데, 나랑 비슷하게 생각하는 YouTube 크리에이터가 있어서 YouTube 링크를 이곳에 적어 본다.

 

https://youtu.be/szWzW0OTKbY

 

 

 

그리고 IT 개발자의 일상 모습을 잘 묘사한 영상이라서 링크를 남겨본다.

https://youtu.be/2aNkwbNLsXg

 

 

판교 뚜벅쵸 님의 YouTube 채널

https://www.youtube.com/channel/UCZ3dxObRPEJzoryEyQqmhWg

 

판교 뚜벅쵸

 

www.youtube.com

 

반응형

Kubernetes의 Pod Scheduling에 관한 공부를 하다보면,

  • Node Label을 이용한 NodeSelector, Node Affinity
  • Node Taint, Tolerlation

가 꼭 등장한다.

위 2가지를 따로 따로 공부하면, 그렇구나 라고 이해가 되다가 

이 2가지를 같이 놓고 생각해보면, 비슷한 기능을 하는 것 같은데 왜 이렇게 2가지 모두 있는거지 라는 질문이 자연스레 떠오른다.

 

아래 블로그가 이런 질문에 대한 답을 잘 하고 있다.

 

https://fisache.tistory.com/19

 

CKA 준비 (7) - Scheduling 2 (Node Selector, Node Affinity)

본 포스팅은 Udemy Certificated Kubernetes Administrator 강좌를 공부한 내용입니다. Certified Kubernetes Administrator (CKA) Practice Exam Tests Prepare for the Certified Kubernetes Administrators C..

fisache.tistory.com

 

 

Node Taint 및 Toleration에 대해 기초부터 알고 싶다면, 아래의 Kubernetes Web Docs를 보면 좋다.

 

https://kubernetes.io/ko/docs/concepts/scheduling-eviction/taint-and-toleration/

 

테인트(Taints)와 톨러레이션(Tolerations)

노드 어피니티는 노드 셋을 (기본 설정 또는 어려운 요구 사항으로) 끌어들이는 파드의 속성이다. 테인트 는 그 반대로, 노드가 파드 셋을 제외할 수 있다. 톨러레이션 은 파드에 적용되며, 파드

kubernetes.io

 

# TODO

위 Web Docs에 TolerationSeconds에 관한 설명이 나오는데, 

내 생각에는 Node 장애가 발생했을 때, 빠르게 Pod가 장애가 발생한 Node에서 종료 처리되고 다른 Node로 스케쥴링되게 하려면, 300초로 설정된 값을 1초로 줄이면 되지 않을까하는 상상을 해본다. 

시간 여유가 있을 때, 한번 1초로 변경하고 Node를 다운시켜서 테스트해봐야겠다.

 

참고:
쿠버네티스는 사용자나 컨트롤러에서 명시적으로 설정하지 않았다면, 자동으로 node.kubernetes.io/not-ready 와 node.kubernetes.io/unreachable 에 대해 tolerationSeconds=300 으로 톨러레이션을 추가한다.
자동으로 추가된 이 톨러레이션은 이러한 문제 중 하나가 감지된 후 5분 동안 파드가 노드에 바인딩된 상태를 유지함을 의미한다.

 

반응형

 


 

작성일: 2024년 1월 10일

 

아래 표는 내가 지금까지 파악한 붕어빵, 잉어빵 파는 곳이다.

 

안양, 인덕원, 의왕, 과천 근처

붕어빵을 파는 가게 이름 위치, 가격 영업 시간 특징, 비고
이름 없음 의왕시 청계5, 6단지 정문 옆
(세븐일레븐 편의점 앞)

3마리 2,000원
정해져있지 않음 붕어빵 가판대에는 사장님이 없다.
사장님이 편의점도 운영하기 때문에
편의점에 들어가서 "붕어빵 사러 왔다"고
말하면, 편의점 사장님이 밖으로 나와서 붕어빵을 만들어준다.
타임빌라스 (1F) 의왕시 백운호수 10:30 ~ 21:00 다른 곳보다 많이 비싸다.
롯데마트 의왕점 (1F) 의왕시 내손동, 롯데마트 1층

1마리 2,000원
  계란빵도 매장에서 직접 구워서 판다.
붕어네 커피 (안양헤센점) 안양시 만안구 안양로 186 
  안양센트럴헤센2차 201동 122호
( 만안구청 근처 )
12:00 ~ 20:00 주차 가능.
이동식 점포에서 파는 붕어빵보다는 많이 작은 미니미니한 빵.
이름 없음 파리바게뜨 양재행운점 바로 앞 - 겨울에만 판매 ㅠㅠ
이름 없음 선바위역   아직 직접 가서 확인을 못 했다.
이름 없음 이디야커피 인덕원 벌말점 - 중년 여성 사장님이 운영하고 있다.
이름 없음 인덕원 삼아아파트, 우리은행 사이 - 내가 갔을 때는  잉어빵, 붕어빵을 파는 분이  없었다.

 

 

서초, 강남 근처

붕어빵을 파는 가게 이름 위치, 가격 영업 시간 특징, 비고
박ㅇ심
(가게 이름은 아니고, 사장님 이름이다)
"장안공원"과 "껍닥집" 사이 길

(2022년 11월 25일 기준)
1마리  700원
3마리 2,000원
정확한 시간은 모르겠고...
점심 시간에 가도 영업하고,
저녁 7시에 가도 영업하고 있었다.
9월부터 영업 시작,
4월 말에 영업 종료.
(2022년에는 갑자기 4월 기온이 올라서 4월 15일에 영업 종료)

여러 잉어빵을 먹어 본 것 중에서는 박*심 사장님이 만든 잉어빵이 내 입맛에는 제일 잘 맞았다.  겉은 바삭하고, 팥은 달지 않다.
(내가 단 음식을 싫어해서, 다른 사람 입맛에는 어떨지 모르겠다)
최ㅈ호
(가게 이름은 아니고, 사장님 이름이다)
"서초3동사거리"에 있는 서문빌딩 앞

(2022년 11월 25일 기준)

3마리 2,000원
정확한 시간은 모르겠고...
점심 시간에 가도 영업하고,
저녁 7시에 가도 영업하고 있었다.
2024년 1월 기준으로 영업을 하지 않고 있음.
붕어빵 가판대가 있던 바로 앞 빌딩 주인이 바뀌면서 영업이 금지된 것 같음.

 

 

아래 사진은 2022년 11월 24일 저녁 7시, 서초동 장안공원 앞 붕어빵 가게.

저녁 6~7시 사이에 가면, 대기줄이 길다. 나는 대략 20분 정도 기다렸던 것 같다.

반응형

 

참고:
Go Module과 Package를 사용하는 방법이 Go Version에 따라 다를 수 있다.
아래 예제는 Go 1.17을 이용한 예제이고, 아마 Go 1.11 이상을 사용하는 경우라면 아래 설명이 잘 맞을 것이다.

 

여담:
나는 본업이 Go Language를 사용해서 개발하는 개발자가 아니다보니, 2~3년에 한번 잠깐 GoLang을 이용해서 개발하려고 하면 Go Package와 Module 때문에 시간을 허비하게 된다.
그래서 오늘은 기왕 스터디한 것을 2~3년 뒤에 또 GoLang을 사용할 일이 있을 경우, 쉽게 PackageModule 개념을 습득하기 위해 예제를 통해서 메모를 할까 한다.

 


 

Go PKG를 다루기 위해서는 크게 3가지 방식이 있다.

 

방식 A

  $GOPATH 경로를 설정하고, 이 $GOPATH 경로 안에서만 Package를 사용하는 방법. (암묵적 Module 사용하기)

 

방식 B    <-- 가장 많은 개발자가 선호하는 방식이 아닐까 생각한다.

  Module을 명시적으로 선언(go mod init x.y.z)하고, 내가 원하는 폴더 어디에서든 Go Source Code를 작성하는 방법.

 

방식 C

  go ven를 이용해서 현재 디렉토리 하위에서 모든 Package를 사용하는 방법.

 

각 Package 사용 방식에 대해서 아래에서 세부적으로 다룬다.

 

 

$GOPATH 경로를 선언하여 Package를 사용하는 방식

설명보다는 예제 코드를 보는 것이 좋을 듯~~~

 

$  vi  ~/.bash_profile
...
export GOPATH=$(go env GOPATH)
...

$  .  ~/.bash_profile
$  echo  $GOPATH
/Users/sejong/go

$  cd  $GOPATH
##
## 이제부터는 $GOPATH/src 디렉토리 밑에서만 코드를 작성해야 한다.
##
$  mkdir  -p src/myexample
$  cd  src/myexample
$  mkdir  myPkgAlpha
$  cd  myPkgAlpha
$  vi  example.go

package myPkgAlpha

import "fmt"

# 주의: 패키지 외부에서 참조할 수 있도록 함수 이름은 대문자로 시작해야 한다.

func MyExamplePrint() {
  fmt.Println("My Alpha PKG")
}

$  cd  ..
$  vi  main.go

package main

import (
  "fmt"
  "myexample/myPkgAlpha"
)

func main() {
  fmt.Println("This is main package.")
  myPkgAlpha.MyExamplePrint()
}

$  go  mod  init  myexample
$  go  mod  tidy
$  go  build

$  ./myexample
This is main package.
My Alpha PKG

$  tree
.
├── go.mod
├── main.go
├── myPkgAlpha
│   └── example.go
└── myexample
$

 

 

 

 

$GOPATH 경로가 아닌, 나만의 별도의 Project 폴더에서 Go Module 사용하는 방식

Go module을 사용하면 $GOPATH 경로가 아닌 아무 곳(디렉토리)에서 Go Source Code를 작성할 수 있는 자유가 생긴다.

긴 설명은 생략하고, 아래 예제처럼 Go Package와 Module을 사용하면 된다.

 

##
##  새로운 프로젝트를 위한 폴더를 만들자~
##
$  mkdir  go-mod-pkg-example
$  cd  go-mod-pkg-example

##
##  Go Package를 만들자.  (myPkgAA)
##  주의사항: package 이름과 folder 이름을 동일하게 작성해야 한다.
##
$  mkdir  myPkgAA
$  cd  myPkgAA

##
## 아래와 같이 myPkgAA 패키지에 대한 코드를 작성한다.
##
$  vi  example.go

package myPkgAA

const (
    COMPANY  = "Sejong Inc"
    LOCATION = "Seoul Korea"
)

##
##  Package가 1개만 있으면 심심하니까, 하나 더 만들자. (mypkg_bb)
##

$  cd  ..
$  mkdir  mypkg_bb
$  cd  mypkg_bb

##
## 아래와 같이 mypkg_bb 패키지에 대한 코드를 작성한다.
##
$  vi  example.go

package mypkg_bb

import (
    "fmt"
)

// NOTE: 함수 이름은 대문자로 시작해야 한다.
func DoSomething(company string, location string) {
    fmt.Println("[In mypkg_bb]")
    fmt.Println("  Company  :", company)
    fmt.Println("  Location :", location)
}


##
##  위에서 작성한 Package를 사용하는 Go Module Code를 작성하자.
##

$  go  mod  init  myexample.cncf/sejong/myexample
$  vi  main.go

// NOTE: package 이름을 main 으로 한다.
package main

// NOTE: 이 module의 이름이 "myexample.cncf/sejong/myexample" 이었기 때문에
//       myPkgAA 패키지를 import하려면 아래처럼 경로를 작성해야 한다.
import (
    "myexample.cncf/sejong/myexample/myPkgAA"
    "myexample.cncf/sejong/myexample/mypkg_bb"
)

func main() {
    mypkg_bb.DoSomething(myPkgAA.COMPANY, myPkgAA.LOCATION)
}

## 솔직히, 위 예제 패키지(로컬 패키지)만 이용하는 경우에는 아래 tidy 명령을 필요 없다.
## 그러나 main.go 파일에서 외부 pkg를 import 한 것도 포함했다면,
## 아래처럼 tidy 명령을 수행해야 한다.
$  go  mod  tidy

$  go  build

$  ./myexample
[In mypkg_bb]
  Company  : Sejong Inc
  Location : Seoul Korea
  
$  tree
.
├── go.mod
├── main.go
├── myPkgAA
│   └── example.go
├── myexample
└── mypkg_bb
    └── example.go

$

 

 

Vendor  방식의 패키지 관리

 

vendor 디렉토리에 특정 버전의 외부 패키지들을 저장 시킨 뒤 빌드에 참여시킴으로써 버전 일관성 문제를 해결 할 수 있다.

그리고 다운로드 불가한 외부 패키지를 어떻게든 한번만 구할 수만 있다면 다운로드 불가 문제도 피할 수 있다.

Container Image처럼 내가 작성한 Go Module 소스 코드가 있는 폴더에 의존성이 있는 모든 Package를 vendor/ 폴더 디렉토리에 다운로드 받는 다는 것이 가장 큰 특징이다.

 

자세한 내용은 아래 Go Module Vendoring 문서를 참고할 것 !!!

 

https://go.dev/ref/mod#go-mod-vendor

 

Go Modules Reference - The Go Programming Language

 

go.dev

 

## 코드를 작성한 상태에서 아래 명령을 실행~

$  mkdir MyExampleApp
$  vi main.go 
...
...

$  go mod vendor

$  ls
main.go   vendor/

 

 

 

 

반응형

아래 예제처럼 cat 명령과 EOF를 이용해서 파일을 생성할 수 있다.

2가지 방식이 있는데, 외우기 편한 쪽으로 선택해서 사용하면 된다.

(나는 방식 A가 조금 더 편하다.)

 

 

방식 A)

$  cat > example.txt <<-EOF
This is test
This is example
EOF
$

 

방식 B)

$  cat << EOF > example.txt 
This is test
This is example
EOF
$

 

 

반응형

 

이미 2020년에 전기차를 구입했고, 올해 한대를 더 구입하려고 보니 내가 구입 대상이 맞는지 궁금해졌다.

즉, 전기차 보조금은 1인 1대만 지원된다고 들은 것 같아서...

 

그래서 환경부의 2022년 공문 - 전기자동차 보급 사업 / 보조금 업무처리지침을 찾아보았다.

 

 

전기자동차 보급 사업, 보조금 지원 대상

 

핵심은 2년 동안 의무 운행 기간을 준수하기만 하면, 2년이 지난 시점에 2대를 구입하면 지원이 된다.

(정확히 표현하면, 두번째 전기차를 보조금을 받고 구입할 수 있다)

 

반대로, 이미 구입한 전기차를 2년의 의무 운행 기간을 준수하지 않으면 보조금을 다시 되돌려 주어야 한다.

 

+ Recent posts