Skip to content

Commit 2cc2f75

Browse files
HarikaDev296Harika
andauthored
cld2labs/openshift-4.20-deployment-scripts (#72)
* openshift user guides Signed-off-by: Harika <codewith3@gmail.com> * Update SNO installation guide with Local Storage steps Added instructions for installing Local Storage Operator and binding disk to Local Storage. * updated typo issues Signed-off-by: Harika <codewith3@gmail.com> * update SNO installation and user guide Signed-off-by: Harika <codewith3@gmail.com> * update infrastructure requirements Signed-off-by: Harika <codewith3@gmail.com> * update openshift user-guide Signed-off-by: Harika <codewith3@gmail.com> * update openshift user-guide Signed-off-by: Harika <codewith3@gmail.com> * update openshift user-guide Signed-off-by: Harika <codewith3@gmail.com> --------- Signed-off-by: Harika <codewith3@gmail.com> Co-authored-by: Harika <codewith3@gmail.com>
1 parent e53bf11 commit 2cc2f75

3 files changed

Lines changed: 746 additions & 0 deletions

File tree

Lines changed: 215 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,215 @@
1+
2+
# Troubleshooting Guide
3+
4+
This section provides common deployment and runtime issues observed during Intel® AI for Enterprise Inference setup — along with step-by-step resolutions.
5+
6+
**Issues:**
7+
1. [Deployment Fails During Bastion Setup](#1-Deployment-Fails-During-Bastion-Setup)
8+
2. [PVC Stuck in Pending State](#2-PVC-Stuck-in-Pending-State)
9+
3. [StatefulSet Pods Not Scheduling on SNO](#3-StatefulSet-Pods-Not-Scheduling-on-SNO)
10+
4. [Route Exists but API Is Not Reachable](#4-Route-Exists-but-API-Is-Not-Reachable)
11+
5. [Keycloak Token Generation Fails](#5-Keycloak-Token-Generation-Fails)
12+
13+
---
14+
15+
### 1. Deployment Fails During Bastion Setup
16+
17+
Deployment stops early with errors such as:
18+
19+
Failed to update apt cache
20+
Bastion node setup failed. Exiting.
21+
22+
**Root Cause**
23+
24+
EI bastion setup assumes:
25+
- A multi-node cluster
26+
- A mutable OS
27+
- Working `apt` repositories
28+
29+
**These assumptions are invalid for SNO brownfield deployments.**
30+
31+
- SNO does not require a bastion
32+
- RHCOS is immutable
33+
- Bastion playbooks are incompatible
34+
35+
**Fix**
36+
```bash
37+
export EI_SKIP_BASTION_SETUP=true
38+
export SKIP_BASTION_SETUP=true
39+
./inference-stack-deploy.sh
40+
```
41+
42+
> **Note:**
43+
> - Bastion is not required for SNO
44+
> - Skipping bastion is expected and correct
45+
> - Do not attempt to fix apt just to satisfy bastion logic
46+
47+
---
48+
49+
### 2. PVC Stuck in Pending State
50+
51+
Verify:
52+
53+
PVC shows:
54+
> status : pending
55+
56+
And pod describe shows
57+
> waiting for first consumer 0/1 nodes didn’t find available PVs
58+
59+
**Verify Local Storage Operator**
60+
```bash
61+
oc get pods -n openshift-local-storage
62+
```
63+
64+
Expected:
65+
- local-storage-operator → Running
66+
- diskmaker-manager → Running
67+
68+
**Verify StorageClass**
69+
```bash
70+
oc get storageclass
71+
```
72+
73+
Expected:
74+
```bash
75+
local-sc kubernetes.io/no-provisioner WaitForFirstConsumer
76+
```
77+
78+
**Verify Disk Availability**
79+
```bash
80+
lsblk
81+
```
82+
83+
Ensure:
84+
- Disk is unused
85+
- Disk is not mounted
86+
- Disk has sufficient capacity
87+
88+
89+
> **Note:**
90+
> - Local Storage Operator creates only ONE PV per disk
91+
> - A used disk cannot create additional PVs
92+
> - Additional PVs require additional disks or partitions
93+
94+
**FIX:**
95+
96+
Add a disk by editing the existing LocalVolume. If a LocalVolume resource already exists (for example local-storage), you do not need to create a new one.
97+
You can edit the existing LocalVolume and add the new disk.
98+
99+
**Edit the Existing LocalVolume**
100+
```bash
101+
kubectl edit localvolume local-storage -n openshift-local-storage
102+
```
103+
**Add the New Disk Under devicePaths**
104+
105+
Locate the storageClassDevices section and add the new disk path.
106+
107+
Before (example):
108+
```bash
109+
spec:
110+
storageClassDevices:
111+
- storageClassName: local-sc
112+
volumeMode: Filesystem
113+
fsType: xfs
114+
devicePaths:
115+
- /dev/nvme4n1
116+
```
117+
118+
After (add one more disk):
119+
```bash
120+
spec:
121+
storageClassDevices:
122+
- storageClassName: local-sc
123+
volumeMode: Filesystem
124+
fsType: xfs
125+
devicePaths:
126+
- /dev/nvme4n1
127+
- /dev/nvme5n1
128+
```
129+
130+
Save and exit the editor.
131+
132+
**Verify PV Creation**
133+
134+
Within a few seconds, the Local Storage Operator will create a new PV.
135+
```bash
136+
oc get pv
137+
```
138+
Expected:
139+
- One new PV per newly added disk
140+
141+
PVCs bind only after a new disk is detected
142+
143+
```bash
144+
oc get pvc -A
145+
```
146+
Expected:
147+
- STATUS: Bound
148+
149+
---
150+
151+
### 3. StatefulSet Pods Not Scheduling on SNO
152+
153+
StatefulSet pods (example: auth-apisix-etcd-0) remain Pending even though PV exists.
154+
155+
**Root Cause**
156+
157+
Local PVs are node-specific
158+
159+
Scheduler needs explicit node placement on SNO
160+
161+
**Fix**
162+
163+
Patch the StatefulSet to pin it to the SNO node:
164+
```bash
165+
oc patch statefulset auth-apisix-etcd -n auth-apisix \
166+
--type='merge' \
167+
-p '{
168+
"spec": {
169+
"template": {
170+
"spec": {
171+
"nodeSelector": {
172+
"kubernetes.io/hostname": "<SNO_HOSTNAME>"
173+
}
174+
}
175+
}
176+
}
177+
}'
178+
```
179+
180+
Restart the pod:
181+
```bash
182+
oc delete pod auth-apisix-etcd-0 -n auth-apisix
183+
```
184+
---
185+
186+
### 4. Route Exists but API Is Not Reachable
187+
Checks:
188+
189+
```bash
190+
oc get routes -A
191+
oc describe route <route-name>
192+
```
193+
**Common Causes**
194+
195+
- Missing /etc/hosts entry
196+
- Incorrect BASE_URL / cluster_url
197+
- TLS mode mismatch
198+
- DNS resolution failure
199+
200+
**Fix**
201+
202+
- Ensure hostname resolves correctly
203+
- Verify TLS mode matches EI configuration
204+
- Use curl -k only for debugging
205+
206+
---
207+
208+
### 5. Keycloak Token Generation Fails
209+
210+
Verify:
211+
- Client ID exists
212+
- Client secret is correct
213+
- Access type is **Confidential**
214+
- `KEYCLOAK_REALM` matches configuration
215+
- Token endpoint URL is correct

0 commit comments

Comments
 (0)