Cài đặt Kubernetes trên Ubuntu

Kubernetes là một hệ thống mã nguồn mở để tự động triển khai, scaling, quản lý các container. Kubernetes được xây dựng bởi Google dựa trên kinh nghiệm quản lý sử dụng các container trong khi triển khai một hệ thống quản lý gọi là Borg ( nhiều lúc gọi là Omega).

Chuẩn bị

Cấu hình địa chỉ IP tĩnh

vim /etc/network/interfaces

iface enp2s0 inet static
address 172.16.12.120
netmask 255.255.255.0
network 172.16.12.0
gateway 172.16.12.1
dns-nameservers 8.8.8.8

Thiết lập file host theo yêu cầu, chú ý thiết lập cả trên master và các node

vim /etc/hosts

172.16.12.120 k8s-master
172.16.12.135 k8s-node1
172.16.12.136 k8s-node2

service networking restart

Cập nhật các bản vá

apt update && apt upgrade -y

Thiết lập kho cài đặt k8s

apt-get update && apt-get install -y apt-transport-https curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add –

cat </etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF

Cài đặt K8s

apt-get update
apt-get install -y kubelet kubeadm kubectl docker.io

Tiếp theo các bạn chạy lệnh sau:

kubeadm init –pod-network-cidr 10.244.0.0/16

cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/confi
chown $(id -u):$(id -g) /root/.kube/config

Tiếp tục chạy lệnh

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

Thống kê các namespaces đang chạy

kubectl get pods –all-namespaces
watch kubectl get pods –all-namespaces

Khởi động lại dịch vụ

systemctl daemon-reload
systemctl restart kubelet
kubectl get node
watch kubectl get node

Cài đặt Dashboard cho k8s

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml

Run command

cat < /root/khanh1.yml
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kube-system
EOF

cat < /root/khanh2.yml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: admin-user
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:

  • kind: ServiceAccount
    name: admin-user
    namespace: kube-system

EOF

Thực hiện chạy lệnh để apply

kubectl apply -f /root/khanh1.yml
kubectl apply -f /root/khanh2.yml

Hiển thị token để đăng nhập vào dashboard

kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk ‘{print $1}’)

kubectl proxy –address 0.0.0.0 –accept-hosts=’^*$’

http://127.0.0.1:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!/login

—————————————– Install Keepalived ——————————-

  1. Install

apt-get install keepalived -y

  1. Create file keepalived.conf

vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 101
priority 101
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.16.12.123
}
}

  1. Copy file to node server and start it

service keepalived start

  1. Check

ip addr show eth0

result

2: ens33: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:a5:ee:89 brd ff:ff:ff:ff:ff:ff
inet 172.16.12.120/24 brd 172.16.12.255 scope global ens33
valid_lft forever preferred_lft forever
inet 172.16.12.123/32 scope global ens33
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fea5:ee89/64 scope link
valid_lft forever preferred_lft forever

   Note: Max 20 ip per vip