تسعى مجموعة الوثائق لهذا المنتج جاهدة لاستخدام لغة خالية من التحيز. لأغراض مجموعة الوثائق هذه، يتم تعريف "خالية من التحيز" على أنها لغة لا تعني التمييز على أساس العمر، والإعاقة، والجنس، والهوية العرقية، والهوية الإثنية، والتوجه الجنسي، والحالة الاجتماعية والاقتصادية، والتمييز متعدد الجوانب. قد تكون الاستثناءات موجودة في الوثائق بسبب اللغة التي يتم تشفيرها بشكل ثابت في واجهات المستخدم الخاصة ببرنامج المنتج، أو اللغة المستخدمة بناءً على وثائق RFP، أو اللغة التي يستخدمها منتج الجهة الخارجية المُشار إليه. تعرّف على المزيد حول كيفية استخدام Cisco للغة الشاملة.
ترجمت Cisco هذا المستند باستخدام مجموعة من التقنيات الآلية والبشرية لتقديم محتوى دعم للمستخدمين في جميع أنحاء العالم بلغتهم الخاصة. يُرجى ملاحظة أن أفضل ترجمة آلية لن تكون دقيقة كما هو الحال مع الترجمة الاحترافية التي يقدمها مترجم محترف. تخلي Cisco Systems مسئوليتها عن دقة هذه الترجمات وتُوصي بالرجوع دائمًا إلى المستند الإنجليزي الأصلي (الرابط متوفر).
تصف هذه الوثيقة تنفيذ مجموعة Kubernetes مع 3 عقد أساسية و 4 عقد عاملة مع مضيف BaseTion الذي يعمل كموازن حمل في Google Cloud Platform (GCP).
توصي Cisco بأن تكون لديك معرفة بالمواضيع التالية:
تستند المعلومات الواردة في هذا المستند إلى:
تم إنشاء المعلومات الواردة في هذا المستند من الأجهزة الموجودة في بيئة معملية خاصة. بدأت جميع الأجهزة المُستخدمة في هذا المستند بتكوين ممسوح (افتراضي). إذا كانت شبكتك قيد التشغيل، فتأكد من فهمك للتأثير المحتمل لأي أمر.
Kube-apiserver:
i. يوفر واجهة برمجة تطبيقات (API) تعمل كالطرف الأمامي من مستوى تحكم Kubernetes.
ثانيا - يعالج الطلبات الخارجية والداخلية التي تحدد ما إذا كان الطلب صالحا ثم يعالجه.
ثالثا - يمكن الوصول إلى واجهة برمجة التطبيقات عن طريق kubectl
واجهة سطر الأوامر أو أدوات أخرى مثل kubeadm
، و عبر مكالمات الراحه.
برنامج Kube-scheduler:
i. يقوم هذا المكون بجدولة البيانات في عقد محددة وفقا لسير العمل المؤتمتة والظروف المعرفة من قبل المستخدم.
برنامج Kube-Controller-Manager:
أولا - مدير مراقبة Kubernetes هو حلقة تحكم تقوم برصد وتنظيم حالة مجموعة Kubernetes.
2. تتلقى معلومات حول الحالة الحالية للمجموعة والكائنات داخلها وترسل تعليمات لنقل المجموعة إلى الحالة المطلوبة لمشغل المجموعة.
ETCD:
i. قاعدة بيانات ذات قيمة أساسية تحتوي على بيانات حول حالة نظام المجموعة وتكوينه.
ETCD قادر على تحمل الأعطال ووزع.
كوبيليت:
ط. تحتوي كل عقدة على kubelet
، وهو تطبيق صغير يمكنه الاتصال بمستوى التحكم في Kubernetes.
ثانيا - kubelet
يضمن تشغيل الحاويات المحددة في تكوين POD على عقدة معينة، وإدارة دورة حياتها.
iii. ينفذ الإجراءات التي تأمر بها مستوى التحكم.
Kube-proxy:
i. تحتوي كافة العقد الحسابية على kube-proxy
، وكيل شبكة يسهل خدمات شبكة Kubernetes.
2. يعالج كافة إتصالات الشبكة خارج النظام وداخله، ويعيد توجيه حركة المرور أو الردود على طبقة تصفية الحزم الخاصة بنظام التشغيل.
PODS:
i. يعمل POD كمثيل تطبيق واحد ويعتبر أصغر وحدة في نموذج كائن Kubernetes.
مضيف Bastion:
i. يستضيف الكمبيوتر بشكل عام تطبيقا واحدا أو عملية واحدة، على سبيل المثال، خادم وكيل أو موازن حمل، ويتم إزالة جميع الخدمات الأخرى أو الحد منها لتقليل التهديد على الكمبيوتر.
مجموعة:
ملاحظة: تكوين VPC على GCP قبل توفير الأجهزة الافتراضية (VMs). مرجع VPC على GCP.
حول توفير GCP Centos7 من سوق GCP.
انقر Launch
.
أختر المنطقة وفقا لأقرب إمكانية وصول. في هذا المختبر، يتم تكوين المنطقة على أنها مومباي.
تكوين الجهاز هو سلسلة E2 عامة الغرض ونوع الجهاز e2-standard-16 (16 vCPU, 64 GB memory)
.
تحديد Allow default access
ولجدار الحماية، Allow HTTP traffic
و Allow HTTPS traffic
.
انقر Create
.
وبالمثل، قم بإنشاء 8 عقد كما هو موضح هنا.
عناوين IP الخاصة:
على GCP يتم تعيين عناوين IP الخاصة والعامة تلقائيا.
master-1 = 10.160.x.9
master-2 = 10.160.x.10
master-3 = 10.160.x.11
worker-1 = 10.160.x.12
worker-2 = 10.160.x.13
worker-3 = 10.160.x.14
worker-4 = 10.160.x.16
bastion = 10.160.x.19
في جميع العقد (رئيسي، عامل، إستيون):
1. افتح منافذ جدار الحماية المطلوبة على خادم Linux وقم بتكوين تكوينات الأمان.
في العقد الرئيسية في عمليات النشر متعددة الأساسيات:
Kubernetes etcd server client API: 2379/tcp, 2380/tcp
Kubernetes API server: 6443/tcp
ملاحظة: تأكد أيضا من السماح بالمنافذ الموجودة على جدار حماية GCP.
2. تكوين إعدادات الشبكة المطلوبة (DNS المحلي، أسماء المضيف، NTP).
خادم BaseUp:
1. إعداد وكيل HA.
2. إضافة تكوين الخادم الأمامي والخلفي على haproxy.conf
ملف.
3. إعادة تشغيل haproxy
الخدمه.
الخطوات الشائعة لعقد الرئيسية والعاملة:
1. قم بتثبيت المستند وتكوينه.
2. قم بتثبيت Kubernetes وتكوينه.
فقط في العقد الرئيسية:
1. تهيئة مجموعة Kubernetes الجديدة (kubeadm init
).
2. تثبيت Calico
المكون الإضافي للشبكة (يستخدم بشكل خاص لخدمة DNS الأساسية على العقد الرئيسية).
3. أستخدم هذا الأمر للانضمام إلى العقد الرئيسية بعقدة رئيسية.
kubeadm join
:6443 --token
\ --discovery-token-ca-cert-hash
\ --control-plane --certificate-key
4. التحقق من صحة معلومات نظام المجموعة باستخدام kubectl get nodes
erasecat4000_flash:.
فقط في عقد العامل:
1. أستخدم هذا الأمر للانضمام إلى عقدة العامل إلى العقدة الرئيسية.
kubeadm join
:6443 --token
\ --discovery-token-ca-cert-hash
2. عند نجاح الانضمام، تحقق من معلومات نظام المجموعة على العقد الرئيسية باستخدام هذا الأمر kubectl get nodes
.
1. تغيير كلمة مرور الجذر إذا لم تكن معروفة باستخدام هذا الأمر:
passwd
2. قم بتغيير أسماء المضيف إذا لزم الأمر باستخدام هذا الأمر.
hostnamectl set-hostname
3. تكوين DNS المحلي.
cat > /etc/hosts <
4. تمكين التسلسل الزمني لخدمات NTP باستخدام هذا الأمر.
systemctl enable --now chronyd
2. تحقق من الحالة باستخدام هذا الأمر.
systemctl status chronyd
3. تحقق من مصادر NTP باستخدام هذا الأمر.
chronyc sources -v
خادم Bastion
الخطوة 1. فحص التحديثات.
sudo yum check-update
الخطوة 2. تثبيت التحديثات إذا لم تكن محدثة.
yum update -y
الخطوة 3. قم بتثبيت الأدوات المساعدة.
yum -y install yum-utils
الخطوة 4. قم بتثبيت حزمة الهاوكيل.
yum install haproxy -y
الخطوة 5. إضافة هذا التكوين تحت الإعدادات الافتراضية في /etc/haproxy/haproxy.cfg
:
frontend kubernetes
bind 10.160.x.19:6443
option tcplog
mode tcp
default_backend kubernetes-master-nodes
frontend http_front
mode http
bind 10.160.x.19:80
default_backend http_back
frontend https_front
mode http
bind 10.160.x.19:443
default_backend https_back
backend kubernetes-master-nodes
mode tcp
balance roundrobin
option tcp-check
server master-1 10.160.x.9:6443 check fall 3 rise 2
server master-2 10.160.x.10:6443 check fall 3 rise 2
server master-3 10.160.x.11:6443 check fall 3 rise 2
backend http_back
mode http
server master-1 10.160.x.9:6443 check fall 3 rise 2
server master-2 10.160.x.10:6443 check fall 3 rise 2
server master-3 10.160.x.11:6443 check fall 3 rise 2
backend https_back
mode http
server master-1 10.160.x.9:6443 check fall 3 rise 2
server master-2 10.160.x.10:6443 check fall 3 rise 2
server master-3 10.160.x.11:6443 check fall 3 rise 2
listen stats
bind 10.160.x.19:8080
mode http
stats enable
stats uri /
الخطوة 6. دققت التشكيل مبرد أن يبدو هذا أمر vi /etc/haproxy/haproxy.cfg
:
---------------------------------------------------------------------
# Example configuration for a possible web application. See the
# full configuration options online.
#
# http://haproxy.1wt.eu/download/1.4/doc/configuration.txt
#
#---------------------------------------------------------------------
#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global
# to have these messages end up in /var/log/haproxy.log you will
# need to:
#
# 1) configure syslog to accept network log events. This is done
# by adding the '-r' option to the SYSLOGD_OPTIONS in
# /etc/sysconfig/syslog
#
# 2) configure local2 events to go to the /var/log/haproxy.log
# file. A line like the following can be added to
# /etc/sysconfig/syslog
#
# local2.* /var/log/haproxy.log
#
log 127.0.0.1 local2
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4000
user haproxy
group haproxy
daemon
# turn on stats unix socket
stats socket /var/lib/haproxy/stats
#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
defaults
mode http
log global
option httplog
option dontlognull
option http-server-close
option forwardfor except 127.0.0.0/8
option redispatch
retries 3
timeout http-request 10s
timeout queue 1m
timeout connect 10s
timeout client 1m
timeout server 1m
timeout http-keep-alive 10s
timeout check 10s
maxconn 3000
frontend kubernetes
bind 10.160.x.19:6443
option tcplog
mode tcp
default_backend kubernetes-master-nodes
frontend http_front
mode http
bind 10.160.x.19:80
default_backend http_back
frontend https_front
mode http
bind 10.160.x.19:443
default_backend https_back
backend kubernetes-master-nodes
mode tcp
balance roundrobin
option tcp-check
server master-1 10.160.x.9:6443 check fall 3 rise 2
server master-2 10.160.x.10:6443 check fall 3 rise 2
server master-3 10.160.x.11:6443 check fall 3 rise 2
backend http_back
mode http
server master-1 10.160.x.9:6443 check fall 3 rise 2
server master-2 10.160.x.10:6443 check fall 3 rise 2
server master-3 10.160.x.11:6443 check fall 3 rise 2
backend https_back
mode http
server master-1 10.160.x.9:6443 check fall 3 rise 2
server master-2 10.160.x.10:6443 check fall 3 rise 2
server master-3 10.160.x.11:6443 check fall 3 rise 2
listen stats
bind 10.160.x.19:8080
mode http
stats enable
stats uri /
الخطوة 7. دققت الحالة من وكيل:
[root@k8-loadbalancer vapadala]# systemctl status haproxy
● haproxy.service - HAProxy Load Balancer
Loaded: loaded (/usr/lib/systemd/system/haproxy.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2022-10-26 08:33:17 UTC; 6s ago
Main PID: 30985 (haproxy-systemd)
CGroup: /system.slice/haproxy.service
├─30985 /usr/sbin/haproxy-systemd-wrapper -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid
├─30986 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -Ds
└─30987 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -Ds
Oct 26 08:33:17 k8-loadbalancer systemd[1]: Started HAProxy Load Balancer.
Oct 26 08:33:17 k8-loadbalancer haproxy-systemd-wrapper[30985]: haproxy-systemd-wrapper: executing /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /r...pid -Ds
Oct 26 08:33:17 k8-loadbalancer haproxy-systemd-wrapper[30985]: [WARNING] 298/083317 (30986) : config : 'option forwardfor' ignored for frontend 'kube...P mode.
Oct 26 08:33:17 k8-loadbalancer haproxy-systemd-wrapper[30985]: [WARNING] 298/083317 (30986) : config : 'option forwardfor' ignored for backend 'kuber...P mode.
Hint: Some lines were ellipsized, use -l to show in full.
[root@k8-loadbalancer vapadala]#
الأخطاء المحتملة
1. خدمة HRroxy في حالة فشل بعد إجراء تغييرات التكوين في haproxy.cfg
. على سبيل المثال;
[root@k8-loadbalancer vapadala]# systemctl status haproxy
● haproxy.service - HAProxy Load Balancer
Loaded: loaded (/usr/lib/systemd/system/haproxy.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Wed 2022-10-26 08:29:23 UTC; 3min 44s ago
Process: 30951 ExecStart=/usr/sbin/haproxy-systemd-wrapper -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid $OPTIONS (code=exited, status=1/FAILURE)
Main PID: 30951 (code=exited, status=1/FAILURE)
Oct 26 08:29:23 k8-loadbalancer systemd[1]: Started HAProxy Load Balancer.
Oct 26 08:29:23 k8-loadbalancer haproxy-systemd-wrapper[30951]: haproxy-systemd-wrapper: executing /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /r...pid -Ds
Oct 26 08:29:23 k8-loadbalancer haproxy-systemd-wrapper[30951]: [WARNING] 298/082923 (30952) : config : 'option forwardfor' ignored for frontend 'kube...P mode.
Oct 26 08:29:23 k8-loadbalancer haproxy-systemd-wrapper[30951]: [WARNING] 298/082923 (30952) : config : 'option forwardfor' ignored for backend 'kuber...P mode.
Oct 26 08:29:23 k8-loadbalancer haproxy-systemd-wrapper[30951]: [ALERT] 298/082923 (30952) : Starting frontend kubernetes: cannot bind socket [10.160.x.19:6443].
Oct 26 08:29:23 k8-loadbalancer haproxy-systemd-wrapper[30951]: haproxy-systemd-wrapper: exit, haproxy RC=1.
Oct 26 08:29:23 k8-loadbalancer systemd[1]: haproxy.service: main process exited, code=exited, status=1/FAILURE.
Oct 26 08:29:23 k8-loadbalancer systemd[1]: Unit haproxy.service entered failed state.
Oct 26 08:29:23 k8-loadbalancer systemd[1]: haproxy.service failed.
Hint: Some lines were ellipsized, use -l to show in full.
قرار
1. Set the boolean value for haproxy_connect_any to true.
2. Restart the haproxy service.
3. Verify the status.
التنفيذ:
[root@k8-loadbalancer vapadala]# setsebool -P haproxy_connect_any=1
[root@k8-loadbalancer vapadala]# systemctl restart haproxy
[root@k8-loadbalancer vapadala]# systemctl status haproxy
● haproxy.service - HAProxy Load Balancer
Loaded: loaded (/usr/lib/systemd/system/haproxy.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2022-10-26 08:33:17 UTC; 6s ago
Main PID: 30985 (haproxy-systemd)
CGroup: /system.slice/haproxy.service
├─30985 /usr/sbin/haproxy-systemd-wrapper -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid
├─30986 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -Ds
└─30987 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -Ds
Oct 26 08:33:17 k8-loadbalancer systemd[1]: Started HAProxy Load Balancer.
Oct 26 08:33:17 k8-loadbalancer haproxy-systemd-wrapper[30985]: haproxy-systemd-wrapper: executing /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /r...pid -Ds.
Oct 26 08:33:17 k8-loadbalancer haproxy-systemd-wrapper[30985]: [WARNING] 298/083317 (30986) : config : 'option forwardfor' ignored for frontend 'kube...P mode.
Oct 26 08:33:17 k8-loadbalancer haproxy-systemd-wrapper[30985]: [WARNING] 298/083317 (30986) : config : 'option forwardfor' ignored for backend 'kuber...P mode.
Hint: Some lines were ellipsized, use -l to show in full.
[root@k8-loadbalancer vapadala]#
تثبيت Docker على العقد الرئيسية والعاملة
الخطوة 1. فحص التحديثات.
sudo yum check-update
الخطوة 2. تثبيت التحديثات إذا لم تكن محدثة.
yum update -y
الخطوة 3. قم بتثبيت الأدوات المساعدة.
yum -y install yum-utils
الخطوة 4. تثبيت Docker.
curl -fsSL https://get.docker.com/ | sh
الخطوة 5. تمكين الخادم.
systemctl enable --now docker
الخطوة 6. بدء تشغيل خدمة الإرساء.
sudo systemctl start docker
الخطوة 7. تحقق من حالة وحدة الإرساء.
sudo systemctl status docker
الناتج:
[root@kube-master1 vapadala]# sudo systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2022-10-25 10:44:28 UTC; 40s ago
Docs: https://docs.docker.com
Main PID: 4275 (dockerd)
Tasks: 21
Memory: 35.2M
CGroup: /system.slice/docker.service
└─4275 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
Oct 25 10:44:26 kube-master1 dockerd[4275]: time="2022-10-25T10:44:26.128233809Z" level=info msg="scheme \"unix\" not registered, fallback to defaul...dule=grpc.
Oct 25 10:44:26 kube-master1 dockerd[4275]: time="2022-10-25T10:44:26.128251910Z" level=info msg="ccResolverWrapper: sending update to cc: {[{unix:/...dule=grpc.
Oct 25 10:44:26 kube-master1 dockerd[4275]: time="2022-10-25T10:44:26.128260953Z" level=info msg="ClientConn switching balancer to \"pick_first\"" module=grpc.
Oct 25 10:44:27 kube-master1 dockerd[4275]: time="2022-10-25T10:44:27.920336293Z" level=info msg="Loading containers: start."
Oct 25 10:44:28 kube-master1 dockerd[4275]: time="2022-10-25T10:44:28.104357517Z" level=info msg="Default bridge (docker0) is assigned with an IP ad... address".
Oct 25 10:44:28 kube-master1 dockerd[4275]: time="2022-10-25T10:44:28.163830549Z" level=info msg="Loading containers: done."
Oct 25 10:44:28 kube-master1 dockerd[4275]: time="2022-10-25T10:44:28.182833703Z" level=info msg="Docker daemon" commit=03df974 graphdriver(s)=overl...=20.10.20.
Oct 25 10:44:28 kube-master1 dockerd[4275]: time="2022-10-25T10:44:28.182939545Z" level=info msg="Daemon has completed initialization".
Oct 25 10:44:28 kube-master1 systemd[1]: Started Docker Application Container Engine.
Oct 25 10:44:28 kube-master1 dockerd[4275]: time="2022-10-25T10:44:28.208492147Z" level=info msg="API listen on /var/run/docker.sock".
Hint: Some lines were ellipsized, use -l to show in full.
[root@kube-master1 vapadala]#
تثبيت Kubernetes على العقد الرئيسية والعمالية
الخطوة 1. إضافة مستودع Kubernetes.
cat <
"gpgcheck = 0" will not verify the authenticity of the package if unsigned. Production environment it is recommended to set "gpgcheck = 1"
الخطوة 2. تعطيل SELinux
.
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
الخطوة 3. تثبيت Kubernetes
.
sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
الخطوة 4. تمكين Kubelet
.
sudo systemctl enable --now kubelet
الخطوة 5. التكوين Pod Network
.
kubeadm init --control-plane-endpoint "10.160.x.19:6443" --upload-certs
الخطوة 6. إنشاء الرمز المميز:
إخراج للأساسي (مستوى التحكم) ولعقد العامل.
العقدة الرئيسية
الرمز المميز: تمت تهيئة مستوى التحكم في Kubernetes بنجاح!
لاستخدام نظام المجموعة، قم بتشغيل هذا كمستخدم عادي:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
بدلا من ذلك، إذا كنت المستخدم الجذري، يمكنك التشغيل.
export KUBECONFIG=/etc/kubernetes/admin.conf
يمكنك الآن نشر شبكة POD إلى نظام المجموعة.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
https://kubernetes.io/docs/concepts/cluster-administration/addons/
يمكنك الآن الانضمام إلى أي عدد من عقد مستوى التحكم أو العقد الرئيسية التي تشغل هذا الأمر على كل منها كجذر.
راجع: سير عمل انضمام Kubeadm
kubeadm join 10.160.0.19:6443 --token 5fv6ce.h07kyelronuy0mw2 \
--discovery-token-ca-cert-hash sha256:b5509b6fe784561f3435bf6b909dc8877e567c70921b21e35c464eb61d9527d0 \
--control-plane --certificate-key 66773b960199ef4530461ef4014e1432066902d4a3dee01669d8622579731701
ملاحظة: يرجى ملاحظة أن مفتاح الشهادة يتيح الوصول إلى البيانات الحساسة لنظام المجموعة، ويبقي ذلك سرا!
كإجراء حماية، يتم حذف الشهادات التي تم تحميلها في غضون ساعتين، وإذا لزم الأمر، يمكنك إستخدامها.
"kubeadm init phase upload-certs --upload-certs" to reload certs afterward.
ثم يمكنك الانضمام إلى أي عدد من عقد العاملين وتشغيلها على كل منها كجذر.
kubeadm join 10.160.0.19:6443 --token 5fv6ce.h07kyelronuy0mw2 \
--discovery-token-ca-cert-hash sha256:b5509b6fe784561f3435bf6b909dc8877e567c70921b21e35c464eb61d9527d0
الخطوة 7. تحقق من خدمة DNS الأساسية.
[root@kube-master1 vapadala]# kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system calico-kube-controllers-59697b644f-v2f22 1/1 Running 0 32m
kube-system calico-node-gdwr6 1/1 Running 0 5m54s
kube-system calico-node-zszbc 1/1 Running 11 (5m22s ago) 32m
kube-system calico-typha-6944f58589-q9jxf 1/1 Running 0 32m
kube-system coredns-565d847f94-cwgj8 1/1 Running 0 58m
kube-system coredns-565d847f94-tttpq 1/1 Running 0 58m
kube-system etcd-kube-master1 1/1 Running 0 59m
kube-system kube-apiserver-kube-master1 1/1 Running 0 59m
kube-system kube-controller-manager-kube-master1 1/1 Running 0 59m
kube-system kube-proxy-flgvq 1/1 Running 0 5m54s
kube-system kube-proxy-hf5qv 1/1 Running 0 58m
kube-system kube-scheduler-kube-master1 1/1 Running 0 59m
[root@kube-master1 vapadala]#
الخطوة 8. تحقق من حالة العقدة الرئيسية.
[root@kube-master1 vapadala]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
kube-master1 Ready control-plane 11m v1.25.3
للانضمام إلى عقد رئيسية متعددة، يتم تنفيذ أمر الانضمام هذا على العقد الرئيسية.
kubeadm join 10.160.x.19:6443 --token 5fv6ce.h07kyelronuy0mw2 \
--discovery-token-ca-cert-hash sha256:b5509b6fe784561f3435bf6b909dc8877e567c70921b21e35c464eb61d9527d0 \
--control-plane --certificate-key 66773b960199ef4530461ef4014e1432066902d4a3dee01669d8622579731701
الأخطاء المحتملة التي تمت مصادفتها أثناء إنشاء الرمز المميز
خطأ CRI
[root@kube-master1 vapadala]# kubeadm init --control-plane-endpoint "10.160.x.19:6443" --upload-certs
[init] Using Kubernetes version: v1.25.3
[preflight] Running pre-flight checks
[WARNING Firewalld]: firewalld is active, please ensure ports [6443 10250] are open or your cluster may not function correctly
error execution phase preflight: [preflight] Some fatal errors occurred:
[ERROR CRI]: container runtime is not running: output: time="2022-10-25T08:56:42Z" level=fatal msg="unable to determine runtime API version: rpc error: code = Unavailable desc = connection error: desc = \"transport: Error while dialing dial unix /var/run/containerd/containerd.sock: connect: no such file or directory\"", error: exit status 1.
[ERROR FileContent--proc-sys-net-ipv4-ip_forward]: /proc/sys/net/ipv4/ip_forward contents are not set to 1
[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`
To see the stack trace of this error execute with --v=5 or higher
حل CRI للخطأ
الخطوة 1. قم بإزالة ملف config.toml، وأعد تشغيل الحاوية.
rm -rf /etc/containerd/config.toml
systemctl restart containerd
kubeadm init
الخطوة 2. تثبيت حاوية:
قم بتثبيت حزمة container.io من مستودعات Docker الرسمية باستخدام هذه الأوامر.
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo.
yum install -y containerd.io
الخطوة 3. تكوين حاوية:
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
الخطوة 4. إعادة تشغيل الحاوية:
systemctl restart containerd
خطأ FileContent—proc-sys-net-ipv4-ip_forward
[ERROR FileContent--proc-sys-net-ipv4-ip_forward]: /proc/sys/net/ipv4/ip_forward contents are not set to 1
خطأ FileContent—proc-sys-net-ipv4-ip_forward دقة
قم بتعيين قيمة ip_forward إلى 1.
echo 1 > /proc/sys/net/ipv4/ip_forward
خدمة DNS الأساسية لا تعمل
[root@kube-master1 vapadala]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
kube-master1 NotReady control-plane 11m v1.25.3
[root@kube-master1 vapadala]# kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-565d847f94-cwgj8 0/1 Pending 0 12m
kube-system coredns-565d847f94-tttpq 0/1 Pending 0 12m
kube-system etcd-kube-master1 1/1 Running 0 12m
kube-system kube-apiserver-kube-master1 1/1 Running 0 12m
kube-system kube-controller-manager-kube-master1 1/1 Running 0 12m
kube-system kube-proxy-hf5qv 1/1 Running 0 12m
kube-system kube-scheduler-kube-master1 1/1 Running 0 12m
[root@kube-master1 vapadala]#
قرار
DNS الأساسي معلق مما يشير إلى وجود مشكلة في الشبكة. لذلك يلزم تثبيت Calico.
المرجع: كاليكو
قم بتنفيذ هذين الأمرين:
curl https://raw.githubusercontent.com/projectcalico/calico/v3.24.3/manifests/calico-typha.yaml -o calico.yaml
kubectl apply -f calico.yaml
عقدة العامل
في "عقدة العامل" عند الحصول على الرمز المميز من الرئيسي:
الخطوة 1. قم بتمكين خدمة Kubelet.
sudo systemctl daemon-reload
sudo systemctl restart docker
sudo systemctl restart kubelet
systemctl enable kubelet.service
الخطوة 2. انضم إلى جميع عقد العامل بالعقدة الرئيسية باستخدام أمر الانضمام هذا.
kubeadm join 10.160.x.19:6443 --token 5fv6ce.h07kyelronuy0mw2 \
--discovery-token-ca-cert-hash sha256:b5509b6fe784561f3435bf6b909dc8877e567c70921b21e35c464eb61d9527d0
الخطوة 3. إذا تمت مواجهة أخطاء متعلقة بالملفات أو المنافذ، فأعد تعيين الأمر kubeadm باستخدام هذا الأمر.
kubeadm reset
بعد إعادة التعيين، أدخل الرمز المميز من العقدة الرئيسية.
kubeadm join 10.160.x.19:6443 --token 5fv6ce.h07kyelronuy0mw2 \
--discovery-token-ca-cert-hash sha256:b5509b6fe784561f3435bf6b909dc8877e567c70921b21e35c464eb61d9527d0
الناتج النهائي
تم تكوين نظام المجموعة الآن، تحقق منه باستخدام الأمر Kubectl احصل على العقد.
ملاحظة: في وقت تكوين نظام المجموعة، يتم تكوين التحكم من العقد الرئيسية فقط. لم يتم تكوين مضيف Bastion كخادم مركزي لمراقبة كافة مكونات Kube في نظام المجموعة.
المراجعة | تاريخ النشر | التعليقات |
---|---|---|
1.0 |
14-Dec-2022 |
الإصدار الأولي |