Score:0

การเชื่อมต่อ `kubectl` กับเซิร์ฟเวอร์ถูกปฏิเสธ

ธง cn

ฉันติดตาม Kelsey Hightower's Kubernetes วิธีที่ยาก ซึ่งจะแนะนำคุณเกี่ยวกับการตั้งค่าคลัสเตอร์ k8s ด้วยตนเอง

นี่คือ ไม่ ทำงานบน minikube - กำลังทำงานบน VPS ระยะไกล

ฉันอยู่ในขั้นตอนที่ฉันตั้งค่าระนาบควบคุม k8s

อย่างไรก็ตามเมื่อพยายามเรียกใช้การตรวจสุขภาพ kube-apiserver ฉันได้รับสิ่งต่อไปนี้:

$ kubectl ข้อมูลคลัสเตอร์ --kubeconfig admin.kubeconfig

หากต้องการดีบักและวินิจฉัยปัญหาคลัสเตอร์เพิ่มเติม ให้ใช้ 'kubectl cluster-info dump'
การเชื่อมต่อกับเซิร์ฟเวอร์ 127.0.0.1:6443 ถูกปฏิเสธ - คุณระบุโฮสต์หรือพอร์ตที่ถูกต้องหรือไม่

ฉันไม่ค่อยแน่ใจว่าจะเริ่มดีบั๊กจากตรงไหนดี

การกำหนดค่า

บริการ k8s ทั้ง 3 แห่งกำลังทำงานอยู่:

สถานะ systemctl kube-apiserver kube-controller-manager kube-scheduler etcd

# => ผลตอบแทนทั้ง 4 รายการ: "ใช้งานอยู่ (กำลังทำงาน)"

เดอะ kube-apiserver ถูกกำหนดค่าให้เริ่มต้นด้วย ระบบ:

 $ cat /etc/systemd/system/kube-apiserver.service
[หน่วย]
คำอธิบาย=เซิร์ฟเวอร์ API ของ Kubernetes
เอกสาร=https://github.com/kubernetes/kubernetes

[บริการ]
ExecStart=/usr/local/bin/kube-apiserver \
  --ที่อยู่โฆษณา=$INTERNAL_IP_REDACTED \
  --allow-privileged=true \
  --apiserver-count=3 \
  --audit-log-maxage=30 \
  --audit-log-maxbackup=3 \
  --audit-log-maxsize=100 \
  --audit-log-path=/var/log/audit.log \
  --authorization-mode=Node,RBAC \
  --bind-address=0.0.0.0 \
  --client-ca-file=/var/lib/kubernetes/ca.pem \
  --enable-admission-plugins=NamespaceLifecycle,NodeRestriction,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota \
  --etcd-cafile=/var/lib/kubernetes/ca.pem \
  --etcd-certfile=/var/lib/kubernetes/kubernetes.pem \
  --etcd-keyfile=/var/lib/kubernetes/kubernetes-key.pem \
  --etcd-servers=https://10.240.0.10:2379,https://10.240.0.11:2379,https://10.240.0.12:2379 \
  --event-ttl=1h \
  --encryption-provider-config=/var/lib/kubernetes/encryption-config.yaml \
  --kubelet-certificate-authority=/var/lib/kubernetes/ca.pem \
  --kubelet-client-certificate=/var/lib/kubernetes/kubernetes.pem \
  --kubelet-client-key=/var/lib/kubernetes/kubernetes-key.pem \
  --runtime-config='api/all=true' \
  --service-account-key-file=/var/lib/kubernetes/service-account.pem \
  --service-account-signing-key-file=/var/lib/kubernetes/service-account-key.pem \
  --service-account-issuer=https://$EXTERNAL_IP_REDACTED:6443 \
  --service-cluster-ip-range=10.32.0.0/24 \
  --service-node-port-range=30000-32767 \
  --tls-cert-file=/var/lib/kubernetes/kubernetes.pem \
  --tls-private-key-file=/var/lib/kubernetes/kubernetes-key.pem \
  --v=2
รีสตาร์ท = เมื่อล้มเหลว
รีสตาร์ทวินาที=5

[ติดตั้ง]
WantedBy=multi-user.target

เดอะ kube-apiserver กำลังทำงานและฟังบนพอร์ตอย่างแน่นอน :6443

 $ lsof -iTCP -sTCP:LISTEN -n -P | เกรป 6443
kube-apis 989442 รูท 7u IPv6 9345693 0t0 TCP *:6443 (ฟัง)

ที่นี่คือ admin.kubeconfig ไฟล์ที่กำหนดค่าให้ค้นหาคลัสเตอร์ที่ 127.0.0.1:6443

api เวอร์ชัน: v1
คลัสเตอร์:
- กลุ่ม:
    ข้อมูลผู้ออกใบรับรอง: LS0tL...
    เซิร์ฟเวอร์: https://127.0.0.1:6443
  ชื่อ: kubernetes-the-hard-way
บริบท:
- บริบท:
    คลัสเตอร์: kubernetes-the-hard-way
    ผู้ใช้: ผู้ดูแลระบบ
  ชื่อ: ค่าเริ่มต้น
บริบทปัจจุบัน: ค่าเริ่มต้น
ประเภท: การกำหนดค่า
ค่ากำหนด: {}
ผู้ใช้:
- ชื่อ: ผู้ดูแลระบบ
  ผู้ใช้:
    ข้อมูลใบรับรองลูกค้า: LS0tLS1CRU...
    ลูกค้าคีย์ข้อมูล: LS0tLS1C....

มีการจัดเตรียมใบรับรอง SSL (สร้างขึ้นก่อนหน้านี้ในบทช่วยสอน Kubernetes)

$ ls -hlt /var/lib/kubernetes/ca*
-rw------- 1 รูทรูท 1.7K 18 ธ.ค. 00:56 /var/lib/kubernetes/ca-key.pem
-rw-r--r-- 1 รูทรูท 1.3K 18 ธ.ค. 00:56 /var/lib/kubernetes/ca.pem

สุดท้าย NGINX ได้รับการกำหนดค่าให้เปลี่ยนเส้นทาง พอร์ต 80 การจราจรไปยังจุดสิ้นสุดการตรวจสุขภาพ

$ cat /etc/nginx/sites-available/kubernetes.default.svc.cluster.local
เซิร์ฟเวอร์ {
  ฟัง 80;
  server_name kubernetes.default.svc.cluster.local;

  สถานที่ /healthz {
     proxy_pass https://127.0.0.1:6443/healthz;
     proxy_ssl_trusted_certificate /var/lib/kubernetes/ca.pem;
  }
}

ดังที่กล่าวไว้ข้างต้น ฉันไม่เห็นจริงๆ ว่ามีอะไรผิดปกติและ ฉันไม่รู้ว่าจะเริ่มตรวจสอบที่ไหนอีก.

ขอขอบคุณ!

jp flag
คุณใช้งาน `kubectl` บนโฮสต์เดียวกันกับที่ `kube-apiserver` ทำงานอยู่หรือไม่
abhchand avatar
cn flag
@AlexD - ถูกต้อง ฉันใช้งานบนโฮสต์เดียวกัน
jp flag
ตรวจสอบผลลัพธ์ของ `env |grep -i พร็อกซี`
Rajesh Dutta avatar
br flag
INTERNAL_IP_REDACTED มีค่าเท่าใด ฉันถามสิ่งนี้เพราะฉันต้องการให้แน่ใจว่าคุณกำลังส่งคำขอไปยังเป้าหมายที่ถูกต้องซึ่งอยู่ในรายการที่อนุญาตพิเศษในใบรับรองเซิร์ฟเวอร์ด้วย
abhchand avatar
cn flag
@RajeshDutta บรรทัดที่แก้ไขคือ `--advertise-address=10.132.0.5` IP ภายในถูกกำหนดจาก `ifconfig` ขอบคุณ!
abhchand avatar
cn flag
@AlexD ไม่มีเอาต์พุตที่ส่งคืนจาก `env | grep -i พร็อกซี่` ขอบคุณ!
Rajesh Dutta avatar
br flag
@abhchand 10.132.0.5 เป็นที่อยู่ IP ภายใน และฉันคิดว่าได้มาจากช่วงเครือข่าย POD ลอง ping ip นี้จากโหนดที่คุณลองใช้คำสั่ง kubectl ฉันสงสัยว่าคุณจะได้รับคำตอบ หากคุณต้องการเข้าถึงสิ่งนี้นอกโหนดหลัก คุณต้องมีตัวโหลดบาลานซ์ส่วนหน้าหรือคุณต้องโฆษณาเซิร์ฟเวอร์ kube-api โดยใช้โหนด IP (โดยมีเงื่อนไขว่าควรระบุที่อยู่ IP ในใบรับรองเซิร์ฟเวอร์)
Score:0
ธง cn

ฉันได้ทำตามคำแนะนำเดียวกันทีละขั้นตอนเพื่อสร้างการทำให้ใช้งานได้อีกครั้ง

ฉันพบว่าคุณอาจใช้คำสั่งนอกคอนโทรลเลอร์ vm

โปรดออกคำสั่งต่อไปนี้เพื่อเข้าสู่คอนโทรลเลอร์ vm:

gcloud คำนวณตัวควบคุม ssh-0

จากนั้น ลองคำสั่งข้อมูลคลัสเตอร์อีกครั้ง

ข้อมูลคลัสเตอร์ kubectl --kubeconfig admin.kubeconfig

นี่คือผลลัพธ์ของฉันเมื่อทำการทดสอบ

ตัวอย่างจากคอนโทรลเลอร์-1 VM

เรียกใช้คำสั่งภายในคอนโทรลเลอร์ -1 VM

xxxxxxx_ayaladeltoro@controller-1:~$ kubectl ข้อมูลคลัสเตอร์ --kubeconfig admin.kubeconfig
ระนาบควบคุม Kubernetes ทำงานที่ https://127.0.0.1:6443
 
หากต้องการดีบักและวินิจฉัยปัญหาคลัสเตอร์เพิ่มเติม ให้ใช้ 'kubectl cluster-info dump'
infosys_ayaladeltoro@controller-1:~$ curl -H "โฮสต์: kubernetes.default.svc.cluster.local" -i http://127.0.0.1/healthz
HTTP/1.1 200 ตกลง
เซิร์ฟเวอร์: nginx/1.18.0 (Ubuntu)
วันที่: วันศุกร์ที่ 24 ธันวาคม 2021 18:57:54 GMT
ประเภทเนื้อหา: ข้อความ/ธรรมดา; ชุดอักขระ=utf-8
ความยาวเนื้อหา: 2
การเชื่อมต่อ: มีชีวิตอยู่
การควบคุมแคช: ไม่มีแคช เป็นส่วนตัว
X-Content-Type-Options: ไร้สาระ
X-Kubernetes-Pf-Flowschema-Uid: 88df1f3d-a43f-4f2d-b2b6-661e0cd190f2
X-Kubernetes-Pf-Prioritylevel-Uid: cd1dd298-6e5e-4091-aac6-baf7c816ba6b

ออกจากตัวควบคุม-1 VM

xxxxxxx_ayaladeltoro@controller-1:~$ ทางออก
ออกจากระบบ การเชื่อมต่อกับ 34.83.87.134 ถูกปิด

เรียกใช้คำสั่งจาก CLOUD SHELL VM

xxxxxxx_ayaladeltoro@cloudshell:~ (ayaladeltoro-training-project)$ kubectl ข้อมูลคลัสเตอร์ --kubeconfig admin.kubeconfig
หากต้องการดีบักและวินิจฉัยปัญหาคลัสเตอร์เพิ่มเติม ให้ใช้ 'kubectl cluster-info dump' การเชื่อมต่อกับเซิร์ฟเวอร์ 127.0.0.1:6443 ถูกปฏิเสธ - คุณระบุโฮสต์หรือพอร์ตที่ถูกต้องหรือไม่

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา