# K8S --- LAB001 ## 1. CREATE EC2 SERVER (MASTER/WORKER NODES) **NOTE: Using aws cli on poweshell** ### 1.1. Init variable ``` $keyName = "tuannd67" $sgGroupId = "sg-05306f6795fe2025b" $subnet1Id = "subnet-061a0f7fde133b9b8" $Server1Name = "tuannd-k8s-master" $Server2Name = "tuannd-k8s-worker1" $Server3Name = "tuannd-k8s-worker2" $amiK8s = "ami-03f3c2405653912a3" ``` ### 1.2. Create Master node ``` $Server1ID = aws ec2 run-instances ` --image-id $amiK8s ` --instance-type t2.medium ` --key-name $keyName ` --security-group-ids $sgGroupId ` --subnet-id $subnet1Id ` --tag-specifications "ResourceType=instance,Tags=[{Key=Name,Value=$Server1Name}]" ` --associate-public-ip-address ` --query "Instances[0].InstanceId" ``` ### 1.3. Create Worker nodes ``` $Server2ID = aws ec2 run-instances ` --image-id $amiK8s ` --instance-type t2.micro ` --key-name $keyName ` --security-group-ids $sgGroupId ` --subnet-id $subnet1Id ` --tag-specifications "ResourceType=instance,Tags=[{Key=Name,Value=$Server2Name}]" ` --associate-public-ip-address ` --query "Instances[0].InstanceId" $Server3ID = aws ec2 run-instances ` --image-id $amiK8s ` --instance-type t2.micro ` --key-name $keyName ` --security-group-ids $sgGroupId ` --subnet-id $subnet1Id ` --tag-specifications "ResourceType=instance,Tags=[{Key=Name,Value=$Server3Name}]" ` --associate-public-ip-address ` --query "Instances[0].InstanceId" ``` ### 1.4. Set hostname ``` sudo hostnamectl set-hostname "master" sudo hostnamectl set-hostname "node1" sudo hostnamectl set-hostname "node2" ``` ## 2. MASTER NODE ### 2.1. Init ``` sudo -s kubeadm init --pod-network-cidr=10.244.0.0/16 mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config kubectl -n kube-system apply -f https://raw.githubusercontent.com/coreos/flannel/bc79dd1505b0c8681ece4de4c0d86c5cd2643275/Documentation/kube-flannel.yml ``` ### 2.2. Get nodes ``` kubectl get nodes ``` ### 2.3. Create token (for joining worker node) ``` kubeadm token create --print-join-command ``` ### 2.4 Delete nodes ``` kubectl get nodes -o wide kubectl drain node1 --delete-local-data --force --ignore-daemonsets kubectl delete node1 ``` ## 3. WORKER NODES ### 3.1. Join cluster ``` kubeadm join 10.0.1.222:6443 --token wrsrkm.vuuetb8jnkkvfe98 \ --discovery-token-ca-cert-hash sha256:9c949654a4ab32409f411f38e4418686e9bd9dc2a59c48fa10bf85a5f2970847 ``` ## 4. TESTING ``` sudo systemctl status docker sudo systemctl status kubelet sudo systemctl daemon-reload sudo systemctl restart docker sudo systemctl restart kubelet sudo systemctl start kubelet ``` ## 5. CLEAN UP ``` aws ec2 stop-instances --instance-ids $Server1ID $Server2ID $Server3ID aws ec2 terminate-instances --instance-ids $Server1ID $Server2ID $Server3ID ```