Kuberbetes Master 구성
1. upbuntu updata 및 docker 설치
$ sudo -i
$ apt-get update & apt-get upgrade -y
$ apt-get install docker.io
docker 설치 후 네트워크 정보 확인하면 docker interface 확인 가능 |
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1460 qdisc mq state UP group default qlen 1000 link/ether 42:01:0a:80:00:26 brd ff:ff:ff:ff:ff:ff inet 10.128.0.38/32 scope global dynamic ens4 valid_lft 3239sec preferred_lft 3239sec inet6 fe80::4001:aff:fe80:26/64 scope link valid_lft forever preferred_lft forever 3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default link/ether 02:42:3b:8f:8a:d2 brd ff:ff:ff:ff:ff:ff inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0 valid_lft forever preferred_lft forever |
2. apt repository kubernetes 추가 및 GPG key 추가
source list 추가
/etc/apt/source.list.d/kubernetes.list 에 kubernetes package list 추가
deb http://apt.kubernetes.io/ kubernetes-xenial main
GPG key 추가
$ curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
$ apt-get update
3. kubernetes 설치 및 설정
kubernetes 설치
$apt-get install -y kubeadm=1.15.1-00 kubelet=1.15.1-00 kubectl=1.15.1-00
dns alias
지금 설치하는 instance 가 master 가 되므로 /etc/hosts 추가 한다.
10.128.0.38 k8smaster
swaf off
$ swapoff -a
cluster 초기화
$ kubeadm init --config=kubeadm-config.yaml --upload-certs | tee kubeadm-init.out
kubeadm-config.yaml |
apiVersion: kubeadm.k8s.io/vibeta2 |
kubeadm-init.out 파일 내용을 보면 join 할 수 있는 key 나 명령어 내용이 저장되어 있다.
4. kubectl 을 사용
유저별 kubectl 명령을 사용하여 cluster 에 crud를 하기 위한 설정 작업을 해아한다.
$ mkdir -p $HOME/.kube
$ sudo cp /etc/kubernetes/admin.conf %HOME/.kube/conf
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config
초기 설치된 cluster의 kube-system 의 정보를 확인 해보면
$ kubectl get all -n kube-system
NAME READY STATUS RESTARTS AGE
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/kube-dns ClusterIP 10.96.0.10 53/UDP,53/TCP,9153/TCP 118s
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE daemonset.apps/kube-proxy 1 1 1 1 1 beta.kubernetes.io/os=linux 118s
NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/coredns 0/2 2 0 118s
NAME DESIRED CURRENT READY AGE replicaset.apps/coredns-5c98db65d4 2 2 0 103s |
network plugin 적용 및 rbac 적용
$ wge https://tinyurl.com/yb4xturm -O rbac-kdd.yaml
$ wge https://tinyurl.com/y8lvqc9g -O calico.yaml
$ kubectl apply -f rbac-kdd.yaml
$ kubectl apply -f calico.yaml
bash auto-completion
$ source <(kubectl completion bash)
$ echo "source <(kubectl completion bash)" ~/.bashrc
Kubernetest worker node 구성
1. ubuntu updata 및 docker 설치
$ sudo -i
$ apt-get update & apt-get upgrade -y
$ apt-get install docker.io
2. apt repository kubernetes 추가 및 GPG key 추가
source list 추가
/etc/apt/source.list.d/kubernetes.list 에 kubernetes package list 추가
deb http://apt.kubernetes.io/ kubernetes-xenial main
GPG key 추가
$ curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
$ apt-get update
3. kubernetes 설치 및 설정
kubernetes 설치
$apt-get install -y kubeadm=1.15.1-00 kubelet=1.15.1-00 kubectl=1.15.1-00
dns alias
master instance ip를 /etc/hosts에 추가 한다.
10.128.0.38 k8smaster
4. cluster join
cluster 초기화 할 때 생긴 로그에 보면 join 방법이 있다.
$ kubeadm join --token xxxxxxxxxxxxxx~~ k8smaster:6443 --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxx~~
master에서 token 값 확인
$ kubeadm token list
$ kubeadm token create <- 만약 token이 만료 되었을 시
master에서 discovery-token-ca-hash값 확인
$ openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
Join은 완료 되었고 kubectl 명령어는 worker node에서는 사용하지 않는다.
5. taint 삭제
master node에 pod를 띄우기 위한 작업.
$ kubectl describe node | grep -i taints
Taints: node-role.kubernetes.io/master:NoSchedule
Taints:
$ kubectl taint nodes --all node-role.kubernetes.io/master-
node/master untainted
error: taint "node-role.kubernetes.io/master:" not found
'kubernetes' 카테고리의 다른 글
Resource 제한 (0) | 2020.02.27 |
---|---|
simple application 배포 (0) | 2020.02.27 |