Computer programming is the process of designing and building an executable computer program for accomplishing specific computing task. Programming involves tasks such as: analysis, generating algorithms, profiling algorithms' accuracy and resource consumption, and the implementation of algorithms in a chosen programming language (commonly referred to as coding). The source code of a program is written in one or more languages that are intelligible to programmers, rather than machine code, which is directly executed by the central processing unit. The purpose of programming is to find a sequence of instructions that will automate the performance of a task (which can be as complex as an operating system) on a computer, often for solving a given problem. The process of programming thus often requires expertise in several different subjects, including knowledge of the application domain, specialized algorithms, and formal logic.Tasks accompanying and related to programming include: testing, debugging, source code maintenance, implementation of build systems, and management of derived artifacts, such as the machine code of computer programs. These might be considered part of the programming process, but often the term software development is used for this larger process with the term programming, implementation, or coding reserved for the actual writing of code. Software engineering combines engineering techniques with software development practices. Reverse engineering is the opposite process. A hacker is any skilled computer expert that uses their technical knowledge to overcome a problem, but it can also mean a security hacker in common language.
@wattsteve
Building Clustered Applications with
Kubernetes and Docker
Steve Watt
Red Hat Emerging Technologies
@wattsteve
Why Docker?
CC flickr bibbit
@wattsteve
Why Kubernetes?
@wattsteve
Kubernetes Cluster
Kubernetes Architectural Overview
Kubernetes Master Server(s)
Linux Server(s)
etcd
API Server
Controller Manager
Kubernetes Node
Linux Server
Kubelet
Docker
Kubernetes Proxy
Kubernetes Node
Linux Server
Kubelet
Docker
Kubernetes Proxy
Kubernetes Node
Linux Server
Kubelet
Docker
Kubernetes Proxy
Scheduler
@wattsteve
Installing Kubernetes
• Hosted Services: Google Compute Engine
• Support for a wide variety of Infrastructure (Azure,
Rackspace, vSphere, AWS)
• Support for several OS’ (RHEL, CentOS, Fedora,
Debian, Ubuntu, Atomic, CoreOS)
• Local but automated (Vagrant/Ansible) * Magic *
• Local but manual (Fedora) * What I use *
https://github.com/GoogleCloudPlatform/kubernetes/blob/
master/docs/getting-started-guides/fedora/
fedora_manual_config.md
@wattsteve
CC flickr kk
Awesome! Now, lets build an application
@wattsteve
Kubernetes Master
Kubernetes Node 1
Kubernetes Cluster
NGINX Pod
NGINX Container
Browser
Request
Kubernetes Node 2
Other Pods
Other Containers
We’ll start by Defining and Deploying a Pod
@wattsteve
Kubernetes Master
Kubernetes Node 1
Kubernetes Cluster
NGINX Pod
NGINX Container
Browser
Request
Kubernetes Node 2
NGINX Pod
NGINX Pod
ReplicationController
NGINX Container
Browser
Request
You might also want to add a ReplicationController
@wattsteve
Kubernetes Master
Kubernetes Node 1
Kubernetes Cluster
NGINX Pod
NGINX Container
Browser
Request
Kubernetes Node 2
NGINX Pod
NGINX Pod
ReplicationController
NGINX Container
NGINX Master Service
And add a Service to Proxy in front of it
@wattsteve
What about Persistence? Lets try out Volumes
Volumes are specified in a Pod and mounted onto a specified path
within a container. There are