Hi, I'm Brendan and today we are going to be talking about operators.
Well, I want to cast your mind back a little bit to the beginnings of computing.
We used to have a big machine and you might even have a punch card, and there was an actual person who was the operator of that computer.
Now over time and that person was responsible for managing the computer, running punch cards, and everything else like that.
Now over time, that person and their duties went into a program that became known as an operating system.
That human no longer ran the computer, the operating system was on the computer to run the computer.
With containers and Kubernetes what we're actually seeing is the same pattern is repeating itself again.
So we might have a Kubernetes cluster over here, and you might want to do something like run a database, maybe it's MySQL.
Well, traditionally if someone is running a database, you had a database administrator or a database operator who is a person, who is responsible for the care and feeding of that database, doing a backup, doing a schema migration, doing a creation of a new database, all of these sorts of tasks associated with keeping that database up and running correctly.
What we're finding with Kubernetes is that just as before when the operator became the operating system, the operator of the database is becoming a Kubernetes operator.
Which again is a program that is responsible for managing these databases.
Well, how does this actually work and practice? One of the prime things that has made Kubernetes so successful in this space, is the fact that it is highly extensible.
Kubernetes has a set of core APIs that are built into the system itself but it also has a bunch of primitives in it, that allow you to add new APIs to the system itself while it's running.
That capability is the key behind the development of operators because in particular when you create an operator, it's just a Pod that happens to be running on the cluster itself.
The very first thing that it might register is going to be a new API and this API might be databases/MySQL.
Now, a user using kube-controller, any of the other tools that they're familiar with for managing Kubernetes like Helm or anything else, can actually now come up to the Kubernetes cluster and say, "Hey, I would like you to create a new database," When that new API object comes into existence inside of Kubernetes, so there's a new database object here, the operator, this is the operator code, notices this new resource has been created, notices that someone has requested that this database be created, and it actually schedules even more Pods onto the same cluster to create that MySQL database.
But just as with everything inside of Kubernetes, we don't just have operators create containers or create a database, they're actually an online self-healings kind of system.
So we are thinking always about the desired state and the current state, and the process of going from desired driving current state to match desired state.
This is again what the operator is doing.
So if for example your database has a problem, the operator can take a step to correct it.
If you request a backup, the operator will take steps to back it up on a particular cycle.
If it suffers a failure, that operator will use the backup to restore it onto a new container.
So it is not simply an install but is in fact an online system just like the human would be, to ensure that your database or whatever system you're running is current, up-to-date, and healthy.
Now when we're thinking about operators, obviously replacing a great deal of trust into that piece of code and so it's important for people to choose operators that are well known and well written.
In many cases, these are actually released by the software developers themselves.
So the people who are responsible for systems like CouchDB or any other sort of many other open-source storage providers, actually also supply an operator that is a Kubernetes object that can do a really good job, monitoring and maintaining that software for you.
In other cases, there's a community developing around building a really great operator for MySQL or any number of other things.
So you can go out just like you would with any other piece of infrastructure that you install on your cluster and find out via community websites, GitHub and many other places, the best operator for the particular piece of software that you want to run and then obviously give it a try and canary before pushing to production.
Because although an operator makes it really awesome to get started with one of these storage systems, you do still want to have a sense of how it works before you start taking a critical dependency on it.
I hope that gives you a perspective about operators, how they interact with Kubernetes, and how to go about finding them.
안녕하세요, 저는 Brendan입니다. 오늘 우리는 운영자에 대해 이야기 할 것입니다.
글쎄, 나는 당신의 마음을 컴퓨팅의 시작으로 조금 뒤로 돌리고 싶습니다.
우리는 큰 기계를 가지고 있었고 당신은 심지어 천공 카드를 가지고있을 것입니다. 그리고 그 컴퓨터의 운영자 인 실제 사람이있었습니다.
이제 시간이 지남에 따라 그 사람은 컴퓨터 관리, 펀치 카드 실행 및 기타 모든 것을 담당했습니다.
이제 시간이 지남에 따라 그 사람과 그들의 의무는 운영 체제로 알려진 프로그램으로 들어갔습니다.
그 사람은 더 이상 컴퓨터를 실행하지 않고 운영 체제는 컴퓨터를 실행하는 컴퓨터에있었습니다.
컨테이너와 쿠 버네 티스를 통해 우리가 실제로보고있는 것은 동일한 패턴이 다시 반복된다는 것입니다.
따라서 여기에 Kubernetes 클러스터가있을 수 있고 데이터베이스 실행과 같은 작업을 수행 할 수 있습니다. 아마도 MySQL 일 수 있습니다.
글쎄요, 전통적으로 누군가가 데이터베이스를 실행하고 있다면 데이터베이스 관리자 또는 데이터베이스 운영자가 있습니다. 데이터베이스 관리 및 공급, 백업 수행, 스키마 마이그레이션 수행, 생성 작업 수행 새로운 데이터베이스, 데이터베이스를 올바르게 실행하고 유지하는 것과 관련된 모든 종류의 작업.
Kubernetes를 통해 우리가 찾은 것은 운영자가 운영 체제가되었을 때와 마찬가지로 데이터베이스 운영자가 Kubernetes 운영자가되고 있다는 것입니다.
다시이 데이터베이스를 관리하는 프로그램입니다.
글쎄, 이것이 실제로 어떻게 작동하고 실행됩니까? 이 분야에서 Kubernetes를 성공적으로 만든 주요 요인 중 하나는 확장 성이 뛰어나다는 사실입니다.
Kubernetes에는 시스템 자체에 내장 된 일련의 핵심 API가 있지만 실행중인 동안 시스템 자체에 새 API를 추가 할 수있는 여러 가지 기본 요소도 있습니다.
특히 연산자를 만들 때 클러스터 자체에서 실행되는 포드 일 뿐이 기 때문에이 기능은 연산자 개발의 핵심입니다.
가장 먼저 등록 할 수있는 것은 새로운 API가 될 것이며이 API는 데이터베이스 / MySQL 일 수 있습니다.
이제 Helm과 같은 Kubernetes를 관리하는 데 익숙한 다른 도구 인 kube-controller를 사용하는 사용자는 이제 실제로 Kubernetes 클러스터에 와서 "이봐 요. 새로운 API 객체가 Kubernetes 내부에 존재하게되면 여기에 새 데이터베이스 객체가 있습니다. 운영자는 운영자 코드입니다.이 새 리소스가 생성되었음을 확인하고 누군가이 데이터베이스를 요청했음을 알 수 있습니다. 실제로 동일한 클러스터에 더 많은 포드를 예약하여 해당 MySQL 데이터베이스를 만듭니다.
하지만 쿠 버네 티스 내부의 모든 것과 마찬가지로 운영자가 컨테이너를 생성하거나 데이터베이스를 생성하도록하는 것이 아니라 실제로 온라인자가 치유 시스템입니다.
그래서 우리는 항상 원하는 상태와 현재 상태, 그리고 원하는 운전 현재 상태에서 원하는 상태와 일치하는 과정을 생각하고 있습니다.
이것은 운영자가하는 일입니다.
따라서 예를 들어 데이터베이스에 문제가있는 경우 운영자는 문제를 해결하기위한 조치를 취할 수 있습니다.
백업을 요청하면 운영자가 특정주기에 백업하는 단계를 수행합니다.
오류가 발생하면 해당 운영자는 백업을 사용하여 새 컨테이너로 복원합니다.
따라서 단순히 설치가 아니라 실제로 인간과 마찬가지로 온라인 시스템으로 데이터베이스 또는 실행중인 시스템이 최신 상태이고 최신 상태이며 정상인지 확인합니다.
이제 우리가 연산자에 대해 생각할 때, 분명히 그 코드 조각에 대한 많은 신뢰를 대체하므로 사람들이 잘 알려져 있고 잘 작성된 연산자를 선택하는 것이 중요합니다.
대부분의 경우 소프트웨어 개발자가 직접 배포합니다.
따라서 CouchDB 또는 기타 여러 오픈 소스 스토리지 제공 업체와 같은 시스템을 담당하는 사람들은 실제로 사용자를 위해 해당 소프트웨어를 모니터링 및 유지 관리하면서 정말 좋은 작업을 수행 할 수있는 Kubernetes 객체 인 운영자를 제공합니다.
다른 경우에는 MySQL 또는 기타 여러 가지를위한 정말 훌륭한 연산자를 구축하기 위해 개발하는 커뮤니티가 있습니다.
따라서 클러스터에 설치 한 다른 인프라를 사용하는 것처럼 나가서 커뮤니티 웹 사이트, GitHub 및 기타 여러 곳을 통해 찾을 수 있습니다. 실행하려는 특정 소프트웨어에 대한 최고의 운영자입니다. 생산에 착수하기 전에 당연히 시도해보고 카나리아를 줘야합니다.
운영자는 이러한 스토리지 시스템 중 하나를 시작하는 것이 정말 멋지지만 중요한 종속성을 갖기 전에 작동 방식을 알고 싶어하기 때문입니다.
운영자, Kubernetes와 상호 작용하는 방법,이를 찾는 방법에 대한 관점을 제공하기를 바랍니다.
Add Comment