نصب kubernetes بر روی debian نود master قسمت دوم

قسمت دوم نصب نود master در kubernetes

در مرحله چهارم نوبت به نصب FlannelD بر روی سیستم میرسد.

برای این منظور بصورت زیر عمل میکنیم. ابتدا برای پیش تنظیم اینکه FlannelD با etcd کارکند دستور زیر را اجرا میکنیم.

etcdctl set /coreos.com/network/config ‘{ “Network”: “192.168.1.0/16” }’

سپس باید FlannelD را دانلود و نصب کنیم.برای این منظور دستورات زیر را اجرا میکنیم.

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

بعد از اجرای دستورات بالا  نوبت به تعریف سرویس FlannelD در systemctl میرسد . برای این منظور طبق روالی که درمرحله قبل  هم رفتیم عمل میکنیم و دستورات زیر را اجرا میکنیم.

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

حالا باید سرویس FlannelD را در سیستم اجرا کنیم . برای این منظور بصورت زیر عمل میکنیم .

systemctl daemon-reload
systemctl enable flanneld
service flanneld start

در مرحله پنجم باید  کاری کنیم که سرویس docker که در مراحل قبل نصب کردیم بتواند FlannelD را بشناسد و با آن کار کند.

برای این منظور فایل سرویس systemctl مربوط به 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 etcd.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

سپس یه کاربر kube که قبلا ساختیم دسترسی اجرای docker را میدهیم.

gpasswd -a kube docker

و درآخر سرویس docker را ریستارت میکنیم.

systemctl daemon-reload
service docker restart

در مرحله ششم نوبت به نصب و تنظیم api-server در kubernetres میرسد.

برای این منظور ابتدا در مسیر خانگی kubernetres دایرکتوری cert را میسازیم و سپس مالکیت آن را به کاربر kube میدهیم.

mkdir -p /var/lib/k8s/kubernetes/crt
chown kube:kube /var/lib/k8s/kubernetes/crt /var/lib/k8s/kubernetes

سپس یک حساب سرویس با استفاده از دستورات زیر ایجاد میکنیم.

if [[ ! -f /var/lib/k8s/kubernetes/kube-serviceaccount.key ]]; thenif [[ ! -f /var/lib/k8s/kubernetes/kube-serviceaccount.key ]]; then
openssl genrsa -out /var/lib/k8s/kubernetes/kube-serviceaccount.key 2048 2>/dev/null
fi
chown kube:kube /var/lib/k8s/kubernetes/kube-serviceaccount.key

نکته: با استفاده از دستورات بالا ما در واقع یک کلید خصوصی برای کاربر kube میسازیم که برای امضا کردن ارتباطات در آینده از آن استفاده کند.

سپس باید سرویس مربوط به  api-server  را در systemctl بسازیم. برای این منظور بصورت زیر عمل میکنیم.

cat << EOF > /lib/systemd/system/kube-apiserver.servicecat

[Unit]
Description=Kubernetes API Server
Documentation=https://github.com/kubernetes/kubernetes
After=network.target etcd.service flanneld.service
[Service]
EnvironmentFile=-/var/lib/k8s/flannel/subnet.env
User=kube
ExecStart=/usr/bin/apiserver \\
–advertise_address=10.0.1.80 \\
–cert-dir=/var/lib/k8s/kubernetes/crt \\
–service-account-key-file=/var/lib/k8s/kubernetes/kube-serviceaccount.key \\
–service-account-lookup=false \\
–admission-control=NamespaceLifecycle,LimitRanger,ServiceAccount,ResourceQuota \\
–bind-address=0.0.0.0 \\
–insecure-bind-address=0.0.0.0 \\
–insecure-port=8080 \\
–etcd-servers=http://10.0.1.80:4001 \\
–portal_net=\${FLANNEL_NETWORK} \\
–logtostderr=true
Restart=on-failure
Type=notify
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
EOF

سپس باید سرویس  api-server را فعال و اجرا کنیم. برای این منظور دستورات زیر را اجرا میکنیم.

systemctl daemon-reload
systemctl enable kube-apiserver
service kube-apiserver start

برای خواندن قسمت اول این مقاله به اینجا مراجعه کنید.

برای خواندن قسمت سوم آموزش به اینجا مراجعه کنید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *