در ادامه مقالات نصب kubernetes و نصب master آن که در سه قسمت اول و دوم و سوم برای شما عزیزان ارائه دادیم . حالا نوبت به مقاله نصب نود ها می رسد.
با این آموزش شما میتوانید هر تعداد نودی که خواستید به master خود اضافه کنید.
حالا به بررسی و آموزش نصب نودها در kubernetes می پردازیم.
برای این منظور باید بر روی هر نود ملزوات زیر را نصب کنیم که به ترتیب در زیر آمده است.
- مواردی که بصورت پایه باید بر روی سیستم نصب باشند.
- docker
- flanneld
- ملزوماتی که برای kubernetes می باشد.
- kubelet
- proxy
بعد از معرفی ملزومات و بسته های لازم نوبت به نصب میرد که در مراحل زیر به توضیح انها میپردازیم.
مرحله اول آماده کردن سیستم
در این مرحله باید سیستم را طوری تنظییم کنیم که نود های دیگری که میخواهیم و همچنین مستر خود را با اسم بشناسد. برای این منظور میتوانیم هماز سرویس DNS ( که در اینجا آموزش های مربوط به آن را مشاهده میکنید) استفاده کنید یا اینکه فایل hosts سیستم را ویرایش کنید.
ما در اینجا به ویرایش فایل hosts بسنده میکنیم. برای این منظور این فایل را بصورت زیر ویرایش میکنیم .
echo ‘10.0.1.80 kube-master.nowlearn.ir kube-master’ >> /etc/hosts
echo ‘10.0.1.81 kube-node1.nowlearn.ir kube-node1’ >> /etc/hosts
echo ‘10.0.1.82 kube-node2.nowlearn.ir kube-node2’ >> /etc/hosts
بعد از اینکه کار بالا را انجام دادیم نوبت به نصب یکسری بسته میرسد که برای کارهای آتی مورد استفاده قرار میگیرند میرسید.
apt-get -fqqy install apt-transport-https ca-certificates curl
بعد از اینکه نصب بسته ها تمام شد ما باید بسته های مربوط به kubernetes را دانلود کنیم . برای این منظور دستور زیر را اجرا کنید.
curl –progress-bar –location ‘https://github.com/kubernetes/kubernetes/releases/download/v1.3.4/kubernetes.tar.gz’ tar –to-stdout -zxf – kubernetes/server/kubernetes-server-linux-amd64.tar.gz | tar –to-stdout -zxf – kubernetes/server/bin/hyperkube > /usr/bin/hyperkube
chmod a+x /usr/bin/hyperkube
cd /usr/bin/
/usr/bin/hyperkube –make-symlinks
نکته: با دستور بالا علاوه بر دانلود kubernetes آن را از حالت فشرده خارج کرده و یک shortcut از آن در مسیر /usr/bin میسازیم.
در آخرین قسمت این مرحله به ساختن مسیر خانگی kubernetes و دادن دسترسی های لازم می پردازیم.
mkdir -p /var/lib/k8s
groupadd kube
useradd kube -g kube -d /var/lib/k8s/ -s /bin/false
chown kube:kube /var/lib/k8s
مرحله دوم نصب docker
شما میتوانید برای این منظور اینجا را ببینید.
مرحله سوم نصب و تعریف و راه اندازی سرویس flanneld
از انجایی که این مرحله بسیار شبیه به نصب این سرویس در master می باشد ما فقط بصورت دستوری آن را برای شما عزیزان آورده ایم.
ابتدا سرویس مربوط را دانلود کرده از حالت فشرده خارج میکنیم و در مسیرهای آورده شده میگذاریم.
cd /usr/local/src
curl –silent –location ‘https://github.com/coreos/flannel/releases/download/v0.5.5/flannel-0.5.5-linux-amd64.tar.gz’ | tar -zvxf-
cd flannel-0.5.5
cp flanneld /usr/bin
mkdir -p /var/lib/k8s/flannel/networks
سپس سرویس مربوط به ان را میسازیم
cat << EOF > /lib/systemd/system/flanneld.service
[Unit]
Description=Network fabric for containers
Documentation=https://github.com/coreos/flannel
After=etcd.service
[Service]
Type=notify
Restart=always
RestartSec=5
ExecStart=/usr/bin/flanneld \\
-etcd-endpoints=http://10.0.1.80:4001 \\
-logtostderr=true \\
-subnet-dir=/var/lib/k8s/flannel/networks \\
-subnet-file=/var/lib/k8s/flannel/subnet.env
[Install]
WantedBy=multi-user.target
EOF
و در آخر سرویس را فعال و اجرا میکنیم.
systemctl daemon-reload
systemctl enable flanneld
service flanneld start
مرحله چهارم آماده سازی docker برای استفاده از flanneld
برای این منظور ابتدا سرویس مربوط به docker را بصورت زیر ویرایش میکنیم. ( در صورت عدم وجود آن را میسازیم)
cat << EOF > /lib/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network.target docker.socket flanneld.service
Requires=docker.socket
[Service]
Type=notify
EnvironmentFile=-/var/lib/k8s/flannel/subnet.env
ExecStart=/usr/bin/dockerd -H fd:// –bip=\${FLANNEL_SUBNET} –mtu=\${FLANNEL_MTU}
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
MountFlags=shared
[Install]
WantedBy=multi-user.target
EOF
سپس باید قابلیت اجرای docker را به یوزر kube بدهیم
gpasswd -a kube docker
و در آخر سرویس را فعال و اجرا میکنیم .
systemctl daemon-reload
service docker restart
مرحله پینجم تعریف واجرای سرویس Kubernetes Proxy
برای این منظور ابتدا سرویس را تعریف میکنیم.
cat << EOF > /lib/systemd/system/kube-proxy.service
[Unit]
Description=Kubernetes Proxy
Documentation=https://github.com/kubernetes/kubernetes
After=flanneld.service
[Service]
User=root
ExecStart=/usr/bin/proxy \\
–master=http://10.0.1.80:8080 \\
–logtostderr=true
Restart=on-failure
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
EOF
سپس سرویس را فعال و اجرا میکنیم.
systemctl daemon-reload
systemctl enable kube-proxy
service kube-proxy start
مرحله ششم تعریف و اجرای سرویس Kubernetes Kubelet
برای این منظور ابتدا سرویس را تعریف میکنیم.
cat << EOF > /lib/systemd/system/kube-kubelet.service
[Unit]
Description=Kubernetes Kubelet
Documentation=https://github.com/kubernetes/kubernetes
After=flanneld.service
[Service]
User=root
ExecStart=/usr/bin/kubelet \\
–cert-dir=/var/lib/k8s/kubernetes/ \\
–chaos-chance=0.0 \\
–container-runtime=docker \\
–address=0.0.0.0 \\
–cpu-cfs-quota=false \\
–api-servers=10.0.1.80:8080 \\
–cluster-dns=8.8.8.8 \\
–port=10250 \\
–logtostderr=true
Restart=on-failure
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
EOF
سپس سرویس را فعال و اجرا میکنیم.
systemctl daemon-reload
systemctl enable kube-kubelet
service kube-kubelet start
در اینجا مراحل نصب نود ما تمام شما است و شما باید بتوانید با استفاده از master بر روی این ماشین ها container اجرا کنید.