قسمت دوم نصب نود 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
برای خواندن قسمت اول این مقاله به اینجا مراجعه کنید.
برای خواندن قسمت سوم آموزش به اینجا مراجعه کنید.