Create Kubernetes Cluster

사전준비

swapoff -a 
vi /etc/fstab 에서 swap 주석처리

 

systemctl stop firewalld

systemctl disable firewalld

systemctl mask --now firewalld

 

Container Runtime Installation

https://kubernetes.io/docs/setup/production-environment/container-runtimes/

 

[CentOS]

 

# Install Docker CE

## Set up the repository

### Install required packages.

yum -y install yum-utils device-mapper-persistent-data lvm2

 

### Add docker repository.

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

 

## Install docker ce.

yum update && yum install -y containerd.io-1.2.10 docker-ce-18.09.9 docker-ce-cli-18.09.9

 

## Create /etc/docker directory.

mkdir /etc/docker

 

# Setup daemon.

 

cat > /etc/docker/daemon.json <<EOF

{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2",
  "storage-opts": [
    "overlay2.override_kernel_check=true"
  ]
}
EOF

 

mkdir -p /etc/systemd/system/docker.service.d

 

# Restart docker.

systemctl daemon-reload

systemctl restart docker

systemctl enable docker

 

 

Kubeadm Kubectl Kubcat elet Installation

https://kubernetes.io/docs/setup/independent/install-kubeadm/

 

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

 

# Set SELinux in permissive mode (effectively disabling it)

setenforce 0

sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

yum install -y kubelet-1.16.15 kubeadm-1.16.15 kubectl-1.16.15 --disableexcludes=kubernetes

systemctl enable --now kubelet

 

cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

 

sysctl --system

 

systemctl daemon-reload

systemctl restart kubelet

 

 

Kubeadm Init

https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/

 

[root@master ~]# kubeadm init


Your Kubernetes master has initialized successfully!


To start using your cluster, you need to run the following as a regular user: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

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 192.168.19.128:6443 --token ei8zy4.8ptf3gz9pzhn3ndg \
    --discovery-token-ca-cert-hash sha256:8ecd892c726ba342cca099bf3df1ebe53ff980cc751c8c750c3b08079ce2e7e8

 

$ kubectl get nodes

NAME       STATUS     ROLES    AGE     VERSION
master01   NotReady   master   3m40s   v1.17.3
worker01   NotReady               38s     v1.17.3

Overlay Network

(master노드에서 수행)

kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"

 


[root@master01 ~]# kubectl get nodes
NAME       STATUS   ROLES    AGE     VERSION
master01   Ready    master   6m24s   v1.17.3
worker01   Ready       3m22s   v1.17.3


[root@master01 ~]# kubectl get pod --all-namespaces -o wide
NAMESPACE     NAME                               READY   STATUS    RESTARTS   AGE     IP               NODE       NOMINATED NODE   READINESS GATES
kube-system   coredns-6955765f44-642pq           1/1     Running   0          6m38s   10.44.0.1        worker01              
kube-system   coredns-6955765f44-wxbx5           1/1     Running   0          6m37s   10.32.0.2        master01              
kube-system   etcd-master01                      1/1     Running   0          6m43s   192.168.19.128   master01              
kube-system   kube-apiserver-master01            1/1     Running   0          6m43s   192.168.19.128   master01              
kube-system   kube-controller-manager-master01   1/1     Running   0          6m43s   192.168.19.128   master01              
kube-system   kube-proxy-2c4h2                   1/1     Running   0          6m38s   192.168.19.128   master01              
kube-system   kube-proxy-v27j2                   1/1     Running   0          3m45s   192.168.19.129   worker01              
kube-system   kube-scheduler-master01            1/1     Running   0          6m43s   192.168.19.128   master01              
kube-system   weave-net-8944b                    2/2     Running   0          2m2s    192.168.19.129   worker01              
kube-system   weave-net-95ksl                    2/2     Running   0          2m2s    192.168.19.128   master01              

 

JumpHost

 

(리눅스)

https://kubernetes.io/docs/tasks/tools/install-kubectl/

 

sudo snap install kubectl --classic

kubectl version

 

홈디렉토리 아래 .kube/config 생성

$ kubectl get nodes

 

(Windows)

다운로드 : https://storage.googleapis.com/kubernetes-release/release/v1.17.0/bin/windows/amd64/kubectl.exe

 

path 경로에 kubectl.exe 위치 추가

홈디렉토리 아래 .kube/config 생성

 

$ kubectl get nodes

 

 

Uninstall Kubernetes

kubectl drain  --delete-local-data --force --ignore-daemonsets
kubectl delete node 


kubeadm reset 
# on debian base 
sudo apt-get purge kubeadm kubectl kubelet kubernetes-cni kube* 
#on centos base
sudo yum remove kubeadm kubectl kubelet kubernetes-cni kube*
# on debian base
sudo apt-get autoremove
#on centos base
sudo yum autoremove
 
sudo rm -rf ~/.kube

 

'Kubernetes' 카테고리의 다른 글

Istio Networking  (0) 2020.03.09
Istio Service Mesh  (0) 2020.03.08
Create Sample Pod  (0) 2020.03.07
Helm 3  (0) 2020.03.07
Kubernetes Ingress Controller  (0) 2020.03.06