我将运行3个次要版本的GKE集群留在了最新版本之后,决定最终进行升级。主升级进行得很好,但是随后我的节点升级失败了。我使用Cloud Shell控制台手动启动了升级并查看了输出,其中的内容类似于“ {<div id="app">
<greeting></greeting>
</div>
<template id="example">
<div class="hello">
<div>
<table border="1">
<thead>
<tr>
<td></td>
<td></td>
<td v-for="month in 3" :key="month">{{ month }} / {{ selectedYear }}</td>
</tr>
</thead>
<tbody v-for="(subCategories, category) in expectedMonthlyBudget" :key="category">
<tr v-for="(yearExpenses, subCategory, idx) in subCategories" :key="subCategory">
<td :rowspan="Object.keys(subCategories).length + 1" v-if="idx == 0">
{{ category }}
</td>
<td>
{{ subCategory }}
</td>
<td v-for="month in 3" :key="month" @dblclick="toggleEditingMoney(yearExpenses[selectedYear][month])">
<div v-if="!yearExpenses[selectedYear][month].editing">
{{ yearExpenses[selectedYear][month].value }}
</div>
<div v-if="yearExpenses[selectedYear][month].editing">
<input @keyup.esc="cancelEditingMoney(yearExpenses[selectedYear][month])" @keyup.enter="doneEditingMoney(yearExpenses[selectedYear][month])" @blur="doneEditingMoney(yearExpenses[selectedYear][month])" v-focus type="text" v-model="yearExpenses[selectedYear][month].value" />
</div>
</td>
</tr>
<tr>
<td>
<input type="text" placeholder="Add a category..." @keyup.enter="addSubCategory(category)" @keyup.esc="cancelAddingSubCategory(category)" v-model="newCategory[category]" />
</td>
<td v-for="month in 3" :key="month"></td>
</tr>
</tbody>
</table>
</div>
</div>
</template>
Vue.component('greeting', {
template: '#example',
directives: {
focus: {
// directive definition
inserted: function (el) {
el.focus()
}
}
},
methods: {
toggleEditingMoney: function(element) {
this.beforeEditingCache = element.value;
element.editing = true;
},
doneEditingMoney: function(element) {
if(element.value.toString().trim() == '') { element.value = 0; }
if(isNaN(element.value)) { element.error = true; }
else { element.error = false; }
element.editing = false;
},
cancelEditingMoney: function(element) {
element.value = this.beforeEditingCache;
element.editing = false;
},
cancelAddingSubCategory: function(category) {
this.newCategory[category] = '';
},
addSubCategory: function(category) {
for (var i = 3; i > 0; i--) {
this.expectedMonthlyBudget[category][this.newCategory[category]] = {
"2020": {
"1": {
"value": 0
},
"2": {
"value": 0
},
"3": {
"value": 0
}
}
};
}
this.newCategory[category] = '';
},
},
data: function() {
return {
selectedYear: 2020,
cachedMoney: 0,
newCategory: {
"Income": '',
"Expense": '',
"EMI": '',
"EquityInvestment": '',
"DebtInvestment": ''
},
beforeEditingCache: 0,
expectedMonthlyBudget: {
"Income": {
"Salary": {
"2020": {
"1": {
"value": 1231312,
"editing": false
},
"2": {
"value": 324,
"editing": false
},
"3": {
"value": 324324,
"editing": false
}
}
},
"Illegal": {
"2020": {
"1": {
"value": 1231312,
"editing": false
},
"2": {
"value": 324,
"editing": false
},
"3": {
"value": 324324,
"editing": false
}
}
}
},
"Expense": {
"Rent": {
"2020": {
"1": {
"value": 1231312,
"editing": false
},
"2": {
"value": 324,
"editing": false
},
"3": {
"value": 324324,
"editing": false
}
}
},
"Car": {
"2020": {
"1": {
"value": 1231312,
"editing": false
},
"2": {
"value": 324,
"editing": false
},
"3": {
"value": 324324,
"editing": false
}
}
},
"Bike": {
"2020": {
"1": {
"value": 1231312,
"editing": false
},
"2": {
"value": 324,
"editing": false
},
"3": {
"value": 324324,
"editing": false
}
}
}
}
}
}
}
});
// create a new Vue instance and mount it to our div element above with the id of app
var vm = new Vue({
el: '#app'
});
”,不幸的是,我不能只是在新区域中增加一个新的节点池并拥有一个流水线工作,因为我使用的是GitLab的AutoDevOps流水线,并且它们对节点池命名进行了某些假设,因此我找不到任何替代方法。如果最终需要在新的节点池中重新创建所有内容,我也不想丢失永久卷中存储的数据。
答案 0 :(得分:1)
我刚刚解决了这个问题,但是找不到关于这个特定问题的任何问题,所以我想在这里发布答案,以防其他人来找它。
我的特殊问题是我有一个带有单个节点的非自动扩展节点池。出于我的目的,这足以使应用程序堆栈平稳运行,并且我不想因无法自动将其他节点添加到池中而产生意外费用。但是,这意味着升级显然必须与该节点上运行的所有其他资源共享资源才能执行升级,而升级还不够。解决方案很简单:临时添加更多节点。
由于这是GKE,因此我可以使用称为“浪涌升级”的beta功能,该功能允许您设置执行升级时要添加的“浪涌”节点的最大数量。启用此功能后,我再次开始了升级过程,它临时添加了一个额外的节点,执行了升级,然后缩减到单个节点。
如果您不使用GKE,或者不希望使用(或不能使用)测试版功能,则只需使用需要升级的节点调整节点池的大小即可。除非您确定您需要更多,否则我将添加一个节点。