• And also working on many new services ◦ Restaurant Management System (RMS) - used in LINE MAN ◦ LINE Chatbot • Autoscaling server per service doesn't scale - each service consume less than a server
• We had limited budget for cluster size (3 machines) for 2 apps • Very modest resource request were used - nobody know how much resource we're using exactly • This result in infighting - whenever Jenkins start building it will crash something
faster than firing up EC2 instances • Simple deployment - edit the container tag and wait • Readiness check ensure basic stability (but don't rely on it much) • Web interface allow team members to skip learning kubectl (but not you)
goes into crash loop nobody know • I wrote kube-slack to send a message to slack. https://github.com/wongnai/kube-slack • It works, but the channel is so spammy
• Sometimes pods of the same application schedule on one node. If it goes down, the whole thing goes down. • Most popular hack is to use inter-pod affinity, but that is available in 1.4 • I modified the scheduler policy to prioritize spreading instead of utilization
PVC Provisioning, Init containers, Pod affinity (that's why we modified scheduler), New interface • 1.6: Node Affinity (now master is just another node) • 1.7: Network Policy
(but there were no other tools at that time) • To upgrade, I manually edit the launch configuration to point to new Kubernetes binary and roll the cluster ◦ Which is not easy because it is gzipped
make changes, and so is the web interface • … but the changes are not tracked! All YAML files are outdated! ◦ I built a tool that do kubectl get pod -o yaml, run sanity pass, manual review then push it to new cluster • Release scheduling issue
| indent:4 }} hack like Helm ◦ Partials are automatically indented to the load partial line • Basic condition by loading file by namespace ◦ We'll need complex conditions soon…. • Simple implementation: ◦ Read one line ◦ If the line begins with # load then recursively run this with the first file found ◦ Indent the partials to the number of spaces found before # • I'm considering open sourcing it, but it is low priority >_< ◦ Plus we are considering other solutions
You can run Kubernetes without migrating everything • Kubernetes upgrade is still something that has to be planned for • You would need to build (or find) some DevOps tools, as there are no established solution yet