1
00:00:02,025 --> 00:00:04,710
(Tutor) Kubernetes can help us with the problem

2
00:00:04,710 --> 00:00:08,780
outlined in the last lecture because with kubernetes,

3
00:00:08,780 --> 00:00:12,320
we have a way of defining our deployments,

4
00:00:12,320 --> 00:00:14,980
our scaling of containers

5
00:00:14,980 --> 00:00:17,950
and how containers should be monitored

6
00:00:17,950 --> 00:00:20,320
and replaced if they fail.

7
00:00:20,320 --> 00:00:22,531
We have a way of defining all of that

8
00:00:22,531 --> 00:00:25,823
independent from the cloud service we're using.

9
00:00:26,660 --> 00:00:30,030
Because kubernetes is an open-source system

10
00:00:30,030 --> 00:00:32,560
and de-facto standard

11
00:00:32,560 --> 00:00:35,240
for managing container deployments

12
00:00:35,240 --> 00:00:37,710
and for orchestrating containers.

13
00:00:37,710 --> 00:00:41,650
And it can help us with tasks like automatic deployment,

14
00:00:41,650 --> 00:00:44,090
with scaling and load balancing,

15
00:00:44,090 --> 00:00:46,330
and with managing our deployment

16
00:00:46,330 --> 00:00:49,040
and our containers in general.

17
00:00:49,040 --> 00:00:51,670
It can help us with monitoring containers

18
00:00:51,670 --> 00:00:55,300
and replacing them automatically if they go down.

19
00:00:55,300 --> 00:00:58,530
And kubernetes simply allows us to

20
00:00:58,530 --> 00:01:01,730
write down a kubernetes configuration.

21
00:01:01,730 --> 00:01:02,870
So you could say

22
00:01:02,870 --> 00:01:05,760
to write down a configuration file,

23
00:01:05,760 --> 00:01:09,320
where we define our desired deployment,

24
00:01:09,320 --> 00:01:11,220
which containers we want to deploy,

25
00:01:11,220 --> 00:01:12,860
how many instances,

26
00:01:12,860 --> 00:01:14,370
if it should scale up,

27
00:01:14,370 --> 00:01:16,880
if they should be replaced and so on.

28
00:01:16,880 --> 00:01:21,390
And then, we can actually pass that configuration

29
00:01:21,390 --> 00:01:24,840
with certain tools to any cloud provider

30
00:01:24,840 --> 00:01:27,270
or actually any machine owned by us

31
00:01:27,270 --> 00:01:29,130
which is configured correctly,

32
00:01:29,130 --> 00:01:32,960
which can then pick up on that Kubernetes configuration

33
00:01:32,960 --> 00:01:37,440
to then create the resources and the deployment specified

34
00:01:37,440 --> 00:01:38,943
in that configuration.

35
00:01:40,100 --> 00:01:42,050
Which basically means that you have

36
00:01:42,050 --> 00:01:46,370
one way of writing down such a configuration file.

37
00:01:46,370 --> 00:01:47,870
It could look something like this.

38
00:01:47,870 --> 00:01:51,770
This is actually how the kubernetes syntax will look like,

39
00:01:51,770 --> 00:01:53,550
but of course we're going to dive into that

40
00:01:53,550 --> 00:01:56,410
in great detail throughout this course.

41
00:01:56,410 --> 00:01:58,900
And then this configuration would work

42
00:01:58,900 --> 00:02:00,650
with any cloud provider

43
00:02:00,650 --> 00:02:03,140
as long as it supports Kubernetes,

44
00:02:03,140 --> 00:02:06,960
or even if it doesn't support it you can manually install

45
00:02:06,960 --> 00:02:11,210
some Kubernetes software on any machine you own

46
00:02:11,210 --> 00:02:14,940
and then that software, if you want to call it like that,

47
00:02:14,940 --> 00:02:18,190
we'll be able to utilize this conflict file

48
00:02:18,190 --> 00:02:20,480
and we'll be able to understand it.

49
00:02:20,480 --> 00:02:23,580
So you have this standardized way of describing the

50
00:02:23,580 --> 00:02:26,970
to-be-created and to-be-managed resources,

51
00:02:26,970 --> 00:02:28,770
and as long as the server

52
00:02:28,770 --> 00:02:31,650
you're planning to use is able to understand

53
00:02:31,650 --> 00:02:33,980
this kubernetes syntax you could say,

54
00:02:33,980 --> 00:02:36,120
and is able to run kubernetes

55
00:02:36,120 --> 00:02:37,800
you can use this conflict file,

56
00:02:37,800 --> 00:02:40,403
no matter which cloud provider you're using.

57
00:02:41,290 --> 00:02:43,510
And what's even better is the fact

58
00:02:43,510 --> 00:02:45,760
that you can actually merge

59
00:02:45,760 --> 00:02:48,638
certain cloud providers-specific options

60
00:02:48,638 --> 00:02:50,750
into this conflict file.

61
00:02:50,750 --> 00:02:52,930
So that if some cloud provider

62
00:02:52,930 --> 00:02:55,960
would require additional configuration,

63
00:02:55,960 --> 00:02:59,950
you could just add that configuration into that main file.

64
00:02:59,950 --> 00:03:02,100
And if you then ever want to use that file

65
00:03:02,100 --> 00:03:03,960
with another cloud provider,

66
00:03:03,960 --> 00:03:05,770
you just need to remove

67
00:03:05,770 --> 00:03:09,940
or replace the cloud provider specific configurations

68
00:03:09,940 --> 00:03:12,220
with the one often new cloud provider,

69
00:03:12,220 --> 00:03:15,793
and you don't have to rewrite the entire conflict file.

70
00:03:16,650 --> 00:03:19,600
That is the idea behind kubernetes.

71
00:03:19,600 --> 00:03:24,350
Having this standardized way of describing deployments.

72
00:03:24,350 --> 00:03:27,880
So kubernetes is quite powerful and quite interesting,

73
00:03:27,880 --> 00:03:31,500
but it is super important that we're all on the same page

74
00:03:31,500 --> 00:03:35,770
regarding what Kubernetes is and what it's not.

75
00:03:35,770 --> 00:03:38,120
Because there are a couple of things

76
00:03:38,120 --> 00:03:40,390
which Kubernetes is not.

77
00:03:40,390 --> 00:03:43,550
For example, it's not a cloud service provider.

78
00:03:43,550 --> 00:03:46,283
It's not an alternative to AWS

79
00:03:47,190 --> 00:03:49,320
or Microsoft Azure.

80
00:03:49,320 --> 00:03:51,270
It's an open-source project.

81
00:03:51,270 --> 00:03:53,460
It's just a collection of concepts

82
00:03:53,460 --> 00:03:56,550
and a collection of software you could say,

83
00:03:56,550 --> 00:04:00,083
which together can be used with any cloud provider.

84
00:04:01,040 --> 00:04:04,510
It's also not a service by a cloud service provider.

85
00:04:04,510 --> 00:04:07,730
So whilst AWS indeed will have a service

86
00:04:07,730 --> 00:04:10,530
which helps us with using kubernetes,

87
00:04:10,530 --> 00:04:14,130
kubernetes itself is as I already said here,

88
00:04:14,130 --> 00:04:15,640
an open source project,

89
00:04:15,640 --> 00:04:18,019
and it can be used with any provider

90
00:04:18,019 --> 00:04:20,750
and with any machine you own.

91
00:04:20,750 --> 00:04:23,620
Some service providers, some cloud providers

92
00:04:23,620 --> 00:04:25,930
might have services that make working

93
00:04:25,930 --> 00:04:27,770
with kubernetes easier,

94
00:04:27,770 --> 00:04:30,580
but you technically can use it anywhere.

95
00:04:30,580 --> 00:04:32,550
The offer of course you're not restricted

96
00:04:32,550 --> 00:04:36,500
to any specific cloud provider or a specific service,

97
00:04:36,500 --> 00:04:38,980
you can use it anywhere.

98
00:04:38,980 --> 00:04:41,470
And it's also really important to understand

99
00:04:41,470 --> 00:04:44,610
that kubernetes is not just a software

100
00:04:44,610 --> 00:04:46,250
which you run on some machine,

101
00:04:46,250 --> 00:04:49,020
it's indeed that collection of concepts and tools

102
00:04:49,020 --> 00:04:51,670
which you'll see in actual throughout this course,

103
00:04:51,670 --> 00:04:53,690
which can help us with deployment

104
00:04:53,690 --> 00:04:55,883
on any provider of our choice.

105
00:04:56,740 --> 00:04:59,730
It's also not an alternative to Docker.

106
00:04:59,730 --> 00:05:02,880
Instead it works together with Docker containers

107
00:05:02,880 --> 00:05:06,130
to deploy containers anywhere.

108
00:05:06,130 --> 00:05:08,250
And it's also not a paid service,

109
00:05:08,250 --> 00:05:10,820
which I guess should be clear at this point,

110
00:05:10,820 --> 00:05:13,680
because again, it's a free open source project

111
00:05:13,680 --> 00:05:17,430
you don't need to pay for using kubernetes.

112
00:05:17,430 --> 00:05:21,040
You might need to pay if you're using a kubernetes

113
00:05:21,040 --> 00:05:23,610
specific cloud providers service

114
00:05:23,610 --> 00:05:24,900
or in general,

115
00:05:24,900 --> 00:05:28,600
if you use Kubernetes to deploy to some cloud provider,

116
00:05:28,600 --> 00:05:31,590
you will of course have to pay for the resources

117
00:05:31,590 --> 00:05:34,000
created by that cloud provider,

118
00:05:34,000 --> 00:05:38,470
but just for using kubernetes to manage this deployment,

119
00:05:38,470 --> 00:05:40,390
you don't have to pay.

120
00:05:40,390 --> 00:05:43,280
Indeed you can think of kubernetes,

121
00:05:43,280 --> 00:05:47,070
as Docker-Compose for multiple machines

122
00:05:47,070 --> 00:05:51,800
because in its core, that is basically what it's about.

123
00:05:51,800 --> 00:05:54,260
Docker composes a tool we learn about,

124
00:05:54,260 --> 00:05:58,540
which helps us manage multi container projects

125
00:05:58,540 --> 00:06:01,050
easily on our local machine.

126
00:06:01,050 --> 00:06:04,130
We could even use it on single container projects,

127
00:06:04,130 --> 00:06:08,027
just to a wide running these long docker run commands.

128
00:06:08,027 --> 00:06:12,600
And kubernetes does this the same for multi machine setups

129
00:06:12,600 --> 00:06:15,220
because when you deploy your application,

130
00:06:15,220 --> 00:06:17,730
you do that by running the application

131
00:06:17,730 --> 00:06:21,350
across multiple computers, multiple machines,

132
00:06:21,350 --> 00:06:23,210
not just one machine.

133
00:06:23,210 --> 00:06:26,710
And kubernetes makes deploying your containers,

134
00:06:26,710 --> 00:06:29,440
monitoring and restarting them automatically

135
00:06:29,440 --> 00:06:32,550
across multiple machines very easy.

136
00:06:32,550 --> 00:06:34,510
So it's like docker-compose

137
00:06:34,510 --> 00:06:38,490
with some convenience deployment specific extra features

138
00:06:38,490 --> 00:06:41,790
for managing and running your dockerized,

139
00:06:41,790 --> 00:06:46,640
your containerized application on a multi machine setup.

140
00:06:46,640 --> 00:06:48,920
That's in the end what kubernetes does this about.

141
00:06:48,920 --> 00:06:52,523
It's like docker-compose for deployment you could say.

