ด้วยชุดจำลองชุดเดียว แอปพลิเคชันกำลังทำงาน
ดังนั้นฉันจึงเปลี่ยนชุดจำลองเป็น 3
จากนั้นพ็อดอีกสองชุดไม่เริ่มทำงาน:
kubectl รับพ็อด
customservice-c8645cd6-7gghm 0/3 เริ่มต้น:CrashLoopBackOff 8 17m
customservice-c8645cd6-f5nbn 3/3 วิ่ง 0 6h50m
customservice-c8645cd6-fh57n 0/3 เริ่มต้น:CrashLoopBackOff 8 17m
kubectl อธิบาย pod customservice-c8645cd6-fh57n
ชื่อ: customservice-c8645cd6-7gghm
เนมสเปซ: ค่าเริ่มต้น
ลำดับความสำคัญ: 0
โหนด: ip-192-168-93-234.us-west-2.compute.internal/192.168.93.234
เวลาเริ่ม: อ. 20 ก.ค. 2564 19:34:48 +0530
ป้ายกำกับ: app=customservice
consul.hashicorp.com/connect-inject-status=injected
ฝักแม่แบบแฮช = c8645cd6
บริการ = บริการที่กำหนดเอง
คำอธิบายประกอบ: consul.hashicorp.com/connect-inject: จริง
consul.hashicorp.com/connect-inject-status: ฉีดแล้ว
consul.hashicorp.com/connect-service: customservice
consul.hashicorp.com/connect-service-port: 18170
consul.hashicorp.com/connect-service-upstreams: แดชบอร์ด:9002
kubernetes.io/psp: eks.privileged
prometheus.io/path: /metrics
prometheus.io/port: 20200
prometheus.io/scrape: จริง
สถานะ: รอดำเนินการ
ไอพี: 192.168.93.88
IP:
ไอพี: 192.168.93.88
ควบคุมโดย: ReplicaSet/customservice-c8645cd6
คอนเทนเนอร์เริ่มต้น:
กงสุลเชื่อมต่อฉีด init:
รหัสคอนเทนเนอร์: นักเทียบท่า://a9bf6bb490f5c21637c18aff681d49d53692f09a3333bf34adb2080816953e26
ภาพ: hashicorp/consul:1.9.7
รหัสรูปภาพ: docker-pullable://hashicorp/consul@sha256:37c7a001af46a68f8e3513bd8180e7f84133d428b0e4ce5cf385d3e54f894760
พอร์ต: <ไม่มี>
พอร์ตโฮสต์: <ไม่มี>
สั่งการ:
/ถัง/sh
-ec
ส่งออก CONSUL_HTTP_ADDR="${HOST_IP}:8500"
ส่งออก CONSUL_GRPC_ADDR="${HOST_IP}:8502"
#สมัครบริการ. HCL จะถูกเก็บไว้ในไดรฟ์ข้อมูลเพื่อให้
# ตะขอ preStop สามารถเข้าถึงได้เพื่อยกเลิกการลงทะเบียนบริการ
แมว <<EOF >/consul/connect-inject/service.hcl
บริการ {
id = "${SERVICE_ID}"
ชื่อ = "บริการที่กำหนดเอง"
ที่อยู่ = "${POD_IP}"
พอร์ต = 18170
เมตา = {
pod-name = "${POD_NAME}"
k8s-namespace = "${POD_NAMESPACE}"
}
}
บริการ {
id = "${PROXY_SERVICE_ID}"
ชื่อ = "customservice-sidecar-proxy"
ชนิด = "เชื่อมต่อพร็อกซี"
ที่อยู่ = "${POD_IP}"
พอร์ต = 20,000
เมตา = {
pod-name = "${POD_NAME}"
k8s-namespace = "${POD_NAMESPACE}"
}
พร็อกซี {
กำหนดค่า {
envoy_prometheus_bind_addr = "0.0.0.0:20200"
}
destination_service_name = "บริการที่กำหนดเอง"
destination_service_id = "${SERVICE_ID}"
local_service_address = "127.0.0.1"
local_service_port = 18170
ต้นน้ำ {
destination_type = "บริการ"
destination_name = "แดชบอร์ด"
local_bind_port = 9002
}
}
ตรวจสอบ {
name = "ผู้รับมอบฉันทะ"
tcp = "${POD_IP}:20000"
ช่วงเวลา = "10 วินาที"
deregister_critical_service_after = "10m"
}
ตรวจสอบ {
ชื่อ = "นามแฝงปลายทาง"
alias_service = "${SERVICE_ID}"
}
}
อฟ
/bin/ทะเบียนบริการกงสุล \
/consul/connect-inject/service.hcl
# สร้างรหัสบูตสแตรปทูต
/bin/กงสุล ต่อทูต \
-proxy-id="${PROXY_SERVICE_ID}" \
-prometheus-scrape-path="/metrics" \
-prometheus-backend-port="20100" \
-bootstrap > /consul/connect-inject/envoy-bootstrap.yaml
# คัดลอกไบนารีกงสุล
cp /bin/กงสุล /กงสุล/เชื่อมต่อ-inject/กงสุล
รัฐ: กำลังรอ
เหตุผล: CrashLoopBackOff
สถานะล่าสุด: สิ้นสุด
เหตุผล: ข้อผิดพลาด
รหัสทางออก: 1
เริ่ม: อังคาร 20 กรกฎาคม 2021 19:51:19 +0530
เสร็จสิ้น: อ. 20 ก.ค. 2564 19:51:23 น. +0530
พร้อม: เท็จ
เริ่มนับใหม่: 8
ขีดจำกัด:
ซีพียู: 50 ม
หน่วยความจำ: 150Mi
คำขอ:
ซีพียู: 50 ม
หน่วยความจำ: 25Mi
สิ่งแวดล้อม:
HOST_IP: (v1:status.hostIP)
POD_IP: (v1:status.podIP)
POD_NAME: customservice-c8645cd6-7gghm (v1:metadata.name)
POD_NAMESPACE: ค่าเริ่มต้น (v1:metadata.namespace)
SERVICE_ID: $(POD_NAME)-customservice
PROXY_SERVICE_ID: $(POD_NAME)-customservice-sidecar-proxy
ภูเขา:
/consul/connect-inject จากกงสุล-connect-inject-data (rw)
/var/run/secrets/kubernetes.io/serviceaccount จาก customservice-token-4xf6t (ro)
ตู้คอนเทนเนอร์:
บริการที่กำหนดเอง:
รหัสคอนเทนเนอร์:
รูปภาพ: customserverlinux.azurecr.io/custom:latest
รหัสรูปภาพ:
พอร์ต: 18170/TCP
พอร์ตโฮสต์: 0/TCP
รัฐ: กำลังรอ
เหตุผล: PodInitializing
พร้อม: เท็จ
เริ่มนับใหม่: 0
สิ่งแวดล้อม:
DASHBOARD_CONNECT_SERVICE_HOST: 127.0.0.1
DASHBOARD_CONNECT_SERVICE_PORT: 9002
ภูเขา:
/home/spring/AppData/Local/erwin/custom Server/ จาก custom-volume (rw)
/var/run/secrets/kubernetes.io/serviceaccount จาก customservice-token-4xf6t (ro)
ทูต-ไซด์คาร์:
รหัสคอนเทนเนอร์:
รูปภาพ: envoyproxy/envoy-alpine:v1.16.0
รหัสรูปภาพ:
พอร์ต: <ไม่มี>
พอร์ตโฮสต์: <ไม่มี>
สั่งการ:
ทูต
--config เส้นทาง
/consul/connect-inject/envoy-bootstrap.yaml
-l
แก้ไขข้อบกพร่อง
รัฐ: กำลังรอ
เหตุผล: PodInitializing
พร้อม: เท็จ
เริ่มนับใหม่: 0
สิ่งแวดล้อม:
HOST_IP: (v1:status.hostIP)
CONSUL_HTTP_ADDR: $(HOST_IP):8500
ภูเขา:
/consul/connect-inject จากกงสุล-connect-inject-data (rw)
/var/run/secrets/kubernetes.io/serviceaccount จาก customservice-token-4xf6t (ro)
กงสุล-ไซด์คาร์:
รหัสคอนเทนเนอร์:
รูปภาพ: hashicorp/consul-k8s:0.25.0
รหัสรูปภาพ:
พอร์ต: <ไม่มี>
พอร์ตโฮสต์: <ไม่มี>
สั่งการ:
กงสุล-k8s
กงสุล-ไซด์คาร์
-service-config
/consul/connect-inject/service.hcl
-consul-ไบนารี
/consul/connect-inject/กงสุล
-enable-metrics-merging=จริง
-merged-metrics-port=20100
-service-metrics-port=18170
-service-metrics-path=/เมตริก
รัฐ: กำลังรอ
เหตุผล: PodInitializing
พร้อม: เท็จ
เริ่มนับใหม่: 0
ขีดจำกัด:
ซีพียู: 20 ม
หน่วยความจำ: 50Mi
คำขอ:
ซีพียู: 20 ม
หน่วยความจำ: 25Mi
สิ่งแวดล้อม:
HOST_IP: (v1:status.hostIP)
CONSUL_HTTP_ADDR: $(HOST_IP):8500
ภูเขา:
/consul/connect-inject จากกงสุล-connect-inject-data (rw)
/var/run/secrets/kubernetes.io/serviceaccount จาก customservice-token-4xf6t (ro)
เงื่อนไข:
พิมพ์สถานะ
เริ่มต้นเป็นเท็จ
พร้อมเท็จ
ตู้คอนเทนเนอร์พร้อมเป็นเท็จ
PodScheduled จริง
ปริมาณ:
ปริมาณที่กำหนดเอง:
ประเภท: EmptyDir (ไดเร็กทอรีชั่วคราวที่แชร์อายุการใช้งานของพ็อด)
ปานกลาง:
SizeLimit: <unset>
customservice-token-4xf6t:
ประเภท: ความลับ (ไดรฟ์ข้อมูลที่เป็นความลับ)
ชื่อลับ: customservice-token-4xf6t
ตัวเลือก: เท็จ
กงสุลเชื่อมต่อฉีดข้อมูล:
ประเภท: EmptyDir (ไดเร็กทอรีชั่วคราวที่แชร์อายุการใช้งานของพ็อด)
ปานกลาง:
SizeLimit: <unset>
คลาส QoS: ระเบิดได้
ตัวเลือกโหนด: <ไม่มี>
ความคลาดเคลื่อน: node.kubernetes.io/not-ready:NoExecute op=มีอยู่เป็นเวลา 300 วินาที
node.kubernetes.io/unreachable:NoExecute op=มีอยู่เป็นเวลา 300 วินาที
เหตุการณ์:
พิมพ์อายุเหตุผลจากข้อความ
---- ------ ---- ---- -------
ตัวกำหนดตารางเวลาเริ่มต้นปกติ 19m กำหนด default/customservice-c8645cd6-7gghm เป็น ip-192-168-93-234.us-west-2.compute.internal เรียบร้อยแล้ว
Normal Pulled 17m (x5 over 19m) kubelet Container image "hashicorp/consul:1.9.7" มีอยู่แล้วในเครื่อง
ปกติ สร้าง 17 ม. (x5 มากกว่า 19 ม.) kubelet สร้างคอนเทนเนอร์ consul-connect-inject-init
ปกติ เริ่มต้น 17 ม. (x5 มากกว่า 19 ม.) kubelet ภาชนะที่เริ่มทำงาน Consul-connect-inject-init
คำเตือน BackOff 3m50s (x68 มากกว่า 18m) kubelet Back-off การรีสตาร์ทคอนเทนเนอร์ล้มเหลว
เนื่องจากคอนเทนเนอร์เริ่มต้นล้มเหลว บันทึกสำหรับคอนเทนเนอร์นั้น:
kubectl บันทึก customservice-c8645cd6-64j2j -c consul-connect-inject-init
บริการที่ลงทะเบียน: customservice
บริการที่ลงทะเบียน: customservice-sidecar-proxy
ตั้งค่าสถานะ แต่ไม่ได้กำหนด: -prometheus-scrape-path
การใช้งาน:
ค่าที่อยู่
ที่อยู่ LAN เพื่อโฆษณาในการลงทะเบียนบริการเกตเวย์
สตริง -admin-access-log-path
พาธสำหรับเขียนบันทึกการเข้าถึงสำหรับเซิร์ฟเวอร์การดูแลระบบ หากไม่ต้องการบันทึกการเข้าถึงให้ระบุ "/dev/null" โดยค่าเริ่มต้นจะใช้ "/dev/null" (ค่าเริ่มต้น "/dev/null")
-admin-ผูกสตริง
ที่อยู่: พอร์ตเพื่อเริ่มเซิร์ฟเวอร์ผู้ดูแลระบบของทูต ตัวแทนต้องการสิ่งนี้ แต่ต้องใช้ความระมัดระวังเพื่อให้แน่ใจว่าจะไม่เปิดเผยต่อเครือข่ายที่ไม่น่าเชื่อถือเนื่องจากสามารถควบคุมความลับและการกำหนดค่าของพร็อกซีได้อย่างเต็มที่ (ค่าเริ่มต้น "localhost:19000")
-bind-address <ชื่อ>=<ip>:<พอร์ต>
ผูกที่อยู่เพื่อใช้แทนกฎการผูกเริ่มต้นที่กำหนดเป็น <ชื่อ>=<ip>:<พอร์ต> คู่ แฟล็กนี้อาจถูกระบุหลายครั้งเพื่อเพิ่มที่อยู่การผูกหลายรายการ
-บูตสแตรป
สร้าง bootstrap.json แต่ไม่ต้องเป็นตัวแทน
ค่า -ca-file
เส้นทางไปยังไฟล์ CA เพื่อใช้สำหรับ TLS เมื่อสื่อสารกับกงสุล นอกจากนี้ยังสามารถระบุผ่านตัวแปรสภาพแวดล้อม CONSUL_CACERT
ค่าเส้นทาง -ca
พาธไปยังไดเร็กทอรีของใบรับรอง CA เพื่อใช้สำหรับ TLS เมื่อสื่อสารกับกงสุล นอกจากนี้ยังสามารถระบุผ่านตัวแปรสภาพแวดล้อม CONSUL_CAPATH
ค่าใบรับรองลูกค้า
พาธไปยังไฟล์ใบรับรองไคลเอนต์เพื่อใช้สำหรับ TLS เมื่อเปิดใช้งาน 'verify_incoming' นอกจากนี้ยังสามารถระบุผ่านตัวแปรสภาพแวดล้อม CONSUL_CLIENT_CERT
ค่าคีย์ไคลเอนต์
พาธไปยังไฟล์คีย์ไคลเอ็นต์ที่จะใช้สำหรับ TLS เมื่อเปิดใช้งาน 'verify_incoming' นอกจากนี้ยังสามารถระบุผ่านตัวแปรสภาพแวดล้อม CONSUL_CLIENT_KEY
- ลงทะเบียนหลังจากสตริงที่สำคัญ
ระยะเวลาที่การตรวจสอบความสมบูรณ์ของบริการเกตเวย์อาจล้มเหลวก่อนที่จะยกเลิกการลงทะเบียน (ค่าเริ่มต้น "6h")
-ทูต-สตริงไบนารี
เส้นทางเต็มไปยังทูตไบนารีที่จะเรียกใช้ โดยค่าเริ่มต้นจะค้นหา $PATH ละเว้นหากใช้ -bootstrap
สตริงรุ่น -envoy
ตั้งค่ารุ่นทูตที่ไบนารีทูตมี (ค่าเริ่มต้น "1.16.4")
-เปิดเผยเซิร์ฟเวอร์
เปิดเผยเซิร์ฟเวอร์สำหรับการรวม WAN ผ่านเกตเวย์ตาข่ายนี้
- สตริงเกตเวย์
ประเภทของเกตเวย์ที่จะลงทะเบียน หนึ่งใน: ยุติ เข้า หรือตาข่าย
-grpc-addr สตริง
ตั้งค่าที่อยู่และพอร์ต gRPC ของตัวแทน (ในรูปแบบ http(s)://host:port) หรือคุณสามารถระบุ CONSUL_GRPC_ADDR ใน ENV (ค่าเริ่มต้น "192.168.93.234:8502")
ที่อยู่ -http-addr
ที่อยู่และพอร์ตของตัวแทน Consul HTTP ค่านี้อาจเป็นที่อยู่ IP หรือที่อยู่ DNS แต่ต้องมีพอร์ตด้วย นอกจากนี้ยังสามารถระบุผ่านตัวแปรสภาพแวดล้อม CONSUL_HTTP_ADDR ค่าเริ่มต้นคือ http://127.0.0.1:8500 แบบแผนยังสามารถตั้งค่าเป็น HTTPS โดยการตั้งค่าตัวแปรสภาพแวดล้อม CONSUL_HTTP_SSL=true
-ตาข่ายเกตเวย์
กำหนดค่าทูตเป็นเกตเวย์ตาข่าย
- เนมสเปซเริ่มต้น
ระบุเนมสเปซที่จะสอบถาม หากไม่ได้ระบุไว้ เนมสเปซจะอนุมานจากโทเค็น ACL ของคำขอ หรือจะใช้ค่าเริ่มต้นเป็นเนมสเปซเริ่มต้น เนมสเปซเป็นคุณลักษณะของ Consul Enterprise
-no-central-config
ตามค่าเริ่มต้น การกำหนดค่าบูตสแตรปของพร็อกซีสามารถปรับแต่งได้จากส่วนกลางสิ่งนี้ต้องการให้คำสั่งรันบนเอเจนต์เดียวกันกับพร็อกซีและเอเจนต์สามารถเข้าถึงได้เมื่อรันคำสั่ง ในกรณีที่สมมติฐานใดข้อหนึ่งถูกละเมิด แฟล็กนี้จะป้องกันคำสั่งที่พยายามแก้ไขการกำหนดค่าจากเอเจนต์โลคัล
-omit-เลิกใช้แท็ก
ใน Consul 1.9.0 รูปแบบของแท็กเมตริกสำหรับ Envoy clusters ได้รับการอัปเดตจาก consul.[service|dc|...] เป็น consul.destination.[service|dc|...] แท็กเก่าถูกรักษาไว้สำหรับความเข้ากันได้แบบย้อนหลัง แต่สามารถปิดใช้งานได้ด้วยแฟล็กนี้
-proxy-id สตริง
ID ของพร็อกซีในตัวแทนท้องถิ่น
-ลงทะเบียน
ลงทะเบียนบริการเกตเวย์ใหม่ก่อนกำหนดค่าและเริ่มใช้งาน Envoy
- สตริงบริการ
ชื่อบริการที่จะใช้ในการลงทะเบียน
-sidecar-สำหรับสตริง
ID ของอินสแตนซ์บริการบนตัวแทนท้องถิ่นที่พร็อกซีนี้ควรเป็นตัวช่วยเสริม จำเป็นต้องลงทะเบียนบริการพร็อกซีกับเอเจนต์เป็นพร็อกซีเชื่อมต่อด้วย Proxy.DestinationServiceID ที่ตั้งค่าเป็นค่านี้ หากมีการลงทะเบียนพร็อกซีดังกล่าวมากกว่าหนึ่งรายการ ก็จะล้มเหลว
ค่า -tls-ชื่อเซิร์ฟเวอร์
ชื่อเซิร์ฟเวอร์ที่จะใช้เป็นโฮสต์ SNI เมื่อเชื่อมต่อผ่าน TLS นอกจากนี้ยังสามารถระบุผ่านตัวแปรสภาพแวดล้อม CONSUL_TLS_SERVER_NAME
ค่าโทเค็น
โทเค็น ACL เพื่อใช้ในการร้องขอ นอกจากนี้ยังสามารถระบุผ่านตัวแปรสภาพแวดล้อม CONSUL_HTTP_TOKEN หากไม่ได้ระบุ การสืบค้นจะใช้ค่าเริ่มต้นเป็นโทเค็นของตัวแทนกงสุลที่อยู่ HTTP
ค่าโทเค็นไฟล์
ไฟล์ที่มีโทเค็น ACL เพื่อใช้ในคำขอแทนที่จะเป็นไฟล์ที่ระบุผ่านอาร์กิวเมนต์ -token หรือตัวแปรสภาพแวดล้อม CONSUL_HTTP_TOKEN นอกจากนี้ยังสามารถระบุผ่านตัวแปรสภาพแวดล้อม CONSUL_HTTP_TOKEN_FILE
-wan-ค่าที่อยู่
ที่อยู่ WAN เพื่อโฆษณาในการลงทะเบียนบริการเกตเวย์ สำหรับเกตเวย์ขาเข้า จำเป็นต้องใช้เพียงที่อยู่ IP (ไม่มีพอร์ต)
ข้อเสนอแนะใด ๆ เกี่ยวกับวิธีการแก้ไขปัญหานี้?