๋ฐฉ๊ธ ํด๋ฌ์คํฐ๋ฅผ k8s 1.5์์ 1.6์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๊ณ 1.5 ์ฃผ์ ๋์ spec.affinity๋ฅผ ์ฌ์ฉํ๋๋ก ์ฌ์ก์ฌ ์ฐจํธ๋ฅผ ์ ๊ทธ๋ ์ด๋ํด์ผํฉ๋๋ค.
Error: UPGRADE FAILED: StatefulSet.apps "zk" is invalid: spec: Forbidden: updates to statefulset spec for fields other than 'replicas' and 'containers' are forbidden.
๊ธฐ์กด ์ฌ์ก์ฌ ํด๋ฌ์คํฐ๋ฅผ ์ญ์ ํ์ง ์๊ณ ์ฐจํธ ์
๊ทธ๋ ์ด๋๋ฅผ ์งํํ๋ ค๋ฉด ์ด๋ป๊ฒํด์ผํฉ๋๊น?
...์์
annotations:
scheduler.alpha.kubernetes.io/affinity: >
{
"podAntiAffinity": {
"requiredDuringSchedulingIgnoredDuringExecution": [
{
"labelSelector": {
"matchExpressions": [
{
"key": "app",
"operator": "In",
"values": ["zk-headless"]
}
]
},
"topologyKey": "kubernetes.io/hostname"
}
]
}
}
...์
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: "app"
operator: In
values:
- zk-headless
topologyKey: "kubernetes.io/hostname"
๋ํ 1.6์์ ์ฃผ์์ผ๋ก ์ ํธ๋๋ฅผ ๊ณ์ ์ฌ์ฉํ๊ธฐ ์ํด https://github.com/kubernetes/features/blob/master/release-1.6/release-notes-draft.md#scheduling ์ ์๊ณ ์์ง๋ง์ด ๋ฌธ์ ๋ ๊ณ์ ๋ฐ์ํฉ๋๋ค. 1.7๋ก ์ ๊ทธ๋ ์ด๋ํ๊ณ ์ถ์ ๋ ์กด์ฌํฉ๋๋ค.
์ด๊ฒ์ ์ํ ์ ์ฅ ์ ํธ๋๋ฅผ ์ ๊ทธ๋ ์ด๋ํ๋ ์ ์คํธ๋ฆผ ๋ฌธ์ ์ด๋ฏ๋ก ์ํ๊น๊ฒ๋ ์ฌ๊ธฐ์ ํ ์์๋ ์์ ์ด ์์ต๋๋ค. ์ฌ๊ธฐ์ ๋์์ ๋๋ฆด ์ ์์ด์ ์ฃ์กํฉ๋๋ค.์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐ ํ๋ ค๋ฉด https://github.com/kubernetes/kubernetes ์์ ํฐ์ผ์ ์ด๊ฑฐ ๋ ๊ธฐ์กด ํฐ์ผ์ ๊ฒ์ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๊ฐ์ฌ!
์ถ๊ฐํ๊ธฐ ์ํด StatefulSet๋ ์ํ ๊ฐ์ฒด (ํ์ฌ 1.8 ์ฉ ๋ฒ ํ ๋ฒ์ )์ด๋ฏ๋ก ์ด๋ฌํ ๋ฆฌ์์ค๊ฐ helm์ผ๋ก ์์ ์ ์ผ๋ก ์ ๊ทธ๋ ์ด๋ ๋ ์ ์๋ค๋ ๋ณด์ฅ์ด ์์ต๋๋ค. ์ฐ๋ฆฌ๋ kubernetes์์ ๋ถ์์ ํ ๋ฆฌ์์ค๋ฅผ ์ฝ๊ฒ ์ ๊ทธ๋ ์ด๋ ํ ์ ์๋๋ก ๋ ธ๋ ฅํ์ง๋ง, ๋๋ก๋ ์ด์ ๋ฒ์ ๊ณผ ํธํ๋์ง ์๋ ๋ณ๊ฒฝ์ผ๋ก ์ธํด ์ ์ด ํ ์์๋ ๊ฒฝ์ฐ๊ฐ ์์ผ๋ฉฐ ์ด๋ ์ง์น์ ํน์ฑ ์ผ๋ฟ์ ๋๋ค. ์ฃ์กํฉ๋๋ค!
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ถ๊ฐํ๊ธฐ ์ํด StatefulSet๋ ์ํ ๊ฐ์ฒด (ํ์ฌ 1.8 ์ฉ ๋ฒ ํ ๋ฒ์ )์ด๋ฏ๋ก ์ด๋ฌํ ๋ฆฌ์์ค๊ฐ helm์ผ๋ก ์์ ์ ์ผ๋ก ์ ๊ทธ๋ ์ด๋ ๋ ์ ์๋ค๋ ๋ณด์ฅ์ด ์์ต๋๋ค. ์ฐ๋ฆฌ๋ kubernetes์์ ๋ถ์์ ํ ๋ฆฌ์์ค๋ฅผ ์ฝ๊ฒ ์ ๊ทธ๋ ์ด๋ ํ ์ ์๋๋ก ๋ ธ๋ ฅํ์ง๋ง, ๋๋ก๋ ์ด์ ๋ฒ์ ๊ณผ ํธํ๋์ง ์๋ ๋ณ๊ฒฝ์ผ๋ก ์ธํด ์ ์ด ํ ์์๋ ๊ฒฝ์ฐ๊ฐ ์์ผ๋ฉฐ ์ด๋ ์ง์น์ ํน์ฑ ์ผ๋ฟ์ ๋๋ค. ์ฃ์กํฉ๋๋ค!