install kubernetes kubernetes 는 docker 기반으로 동작하는 컨티에너 오케스트레이션( container orchestration ) 플랫폼이다. 이전포스트들에서 봐왔듯이 필자는 docker에 관심이많다. 자연스레 kubernetes에 대해 접하게되었고 요즘들어 인기가더욱 많은듯하다. 필자는 주로 docker swarm cluster로 컨테이너 관리를 해왔지만 kubernetes가 관리측면에서는 docker swarm cluster 보다는 훨씬더 나은듯 보였다. ( 익숙하다면.. ) 일단 kubernetes에서가장 눈에띄는 점은 container 관리 dashboard가 존재한다는 점과 container auto scale 이가능하다는 점이다. 아직 많은 부분을 알진못하지만 학습하면서 하나둘 알아보려한다. 필자는 centos 7 2대의 vm으로 진행하였다.
yum update
install docker and start service 1
2
$ sudo yum install -y docker
$ sudo systemctl enable docker && systemctl start docker
register repository 1
2
3
4
5
6
7
8
9
$ sudo bash -c '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'
diable selinux
install kubelet kubeadm kubectl and start service 1
2
$ sudo yum install -y kubelet kubeadm kubectl
$ sudo systemctl enable kubelet && sudo systemctl start kubelet
config iptables and apply 1
2
3
4
5
$ sudo bash -c 'cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF'
$ sudo sysctl --system
disalbe firewalld 1
2
$ sudo systemctl disable firewalld
$ sudo systemctl stop firewalld
swap off
kubernetes 설치가 모두 끝이났다. 뭐가이렇게 설치하고 설정할게 많은지.. 시작부터불길한예감이 ..
kubernetes cluster config [ 참고 ] 탭 kubernetes official guide 참고
init ( master node ) 이제 kubernetes 를 본격적으로 사용하기위해 kubernetes cluster를 master node에서 초기화한다.
1
2
3
$ sudo kubeadm init --pod-network-cidr 10.244.0.0/16 --apiserver-advertise-address 10.10.80.11
다음과같이 설정정보가 나타난다.1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Your Kubernetes master 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
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/
You can now join any number of machines by running the following on each node
as root:
kubeadm join --token 02bcf2.f10d2bf5defde80b 10.10.80.11:6443 --discovery-token-ca-cert-hash sha256:2a849134a0c617684e42b701afd43074bbe9a11422e8b6dd51e879a28875fd1c
제시된 설정정보를 입력한다.1
2
3
$ mkdir -p $HOME /.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME /.kube/config
$ sudo chown $(id -u):$(id -g) $HOME /.kube/config
config flannel network ( master node ) docker swarm cluster 구성시 default로 생성되는 overlay network라고 생각하면 될듯하다. 설정을 진행한다.1
$ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/v0.9.1/Documentation/kube-flannel.yml
check pod status ( master node ) 1
2
3
4
5
6
7
8
9
10
11
$ kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system etcd-master 1/1 Running 0 4m
kube-system kube-apiserver-master 1/1 Running 0 4m
kube-system kube-controller-manager-master 1/1 Running 0 4m
kube-system kube-dns-6f4fd4bdf-ppmgr 3/3 Running 0 9m
kube-system kube-flannel-ds-b4v6s 1/1 Running 0 1m
kube-system kube-flannel-ds-g958w 1/1 Running 0 1m
kube-system kube-proxy-4j29q 1/1 Running 0 9m
kube-system kube-proxy-n58wv 1/1 Running 0 4m
kube-system kube-scheduler-master 1/1 Running 0 4m
kube-system kube-dns-6f4fd4bdf-ppmgr 3/3 Running
0 9m Pending -> ContainerCreating -> Running 상태변경을 확인한다.
join cluster( worker node ) master node에서 kubernetes init 시 나온 token 정보를 worker node에 입력한다.1
sudo kubeadm join --token 02bcf2.f10d2bf5defde80b 10.10.80.11:6443 --discovery-token-ca-cert-hash sha256:2a849134a0c617684e42b701afd43074bbe9a11422e8b6dd51e879a28875fd1c
check node status ( master node ) 1
2
3
4
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
master Ready master 11m v1.9.4
node1 Ready <none> 5m v1.9.4
node state가 NotReady에서 Ready로 변경된것을 확인할수있다.
참고 https://kubernetes.io/docs/setup/independent/install-kubeadm/ https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/#24-initializing-your-master https://blog.tekspace.io/setup-kubernetes-cluster-on-centos-7/ https://www.assistanz.com/steps-to-install-kubernetes-cluster-manually-using-centos-7/