版本升級
隨著Kubernetes版本的持續(xù)升級愁溜,一些資源對象會不斷引入新的屬性雄卷。為了在不影響當前功能的情況下引入對新特性的支持优床,我們通常會采用下面兩種典型方法。
- 方法1烘豹,在設(shè)計數(shù)據(jù)庫表的時候谜洽,在每個表中都增加一個很長的備注字段,之后擴展的數(shù)據(jù)以某種格式(如XML吴叶、JSON阐虚、簡單字符串拼接等)放入備注字段。因為數(shù)據(jù)庫表的結(jié)構(gòu)沒有發(fā)生變化蚌卤,所以此時程序的改動范圍是最小的实束,風險也更小,但看起來不太美觀逊彭。
- 方法2咸灿,直接修改數(shù)據(jù)庫表,增加一個或多個新的列侮叮,此時程序的改動范圍較大避矢,風險更大,但看起來比較美觀囊榜。
顯然审胸,兩種方法都不完美。更加優(yōu)雅的做法是卸勺,先采用方法1實現(xiàn)這個新特性砂沛,經(jīng)過幾個版本的迭代,等新特性變得穩(wěn)定成熟了以后曙求,可以在后續(xù)版本中采用方法2升級到正式版碍庵。為此,Kubernetes為每個資源對象都增加了類似數(shù)據(jù)庫表里備注字段的通用屬性Annotations悟狱,以實現(xiàn)方法1的升級静浴。
api分組
Kubernetes將api分成了很多組(kubectl api-versions
),每個組分別進行迭代升級挤渐。