4020
Comment:
|
4488
|
Deletions are marked like this. | Additions are marked like this. |
Line 4: | Line 4: |
[[k8s/StudyNotes/Pods]] [[k8s/StudyNotes/Services]] |
|
Line 6: | Line 8: |
Certified Kubernetes Administrator: https://www.cncf.io/certification/cka/ Exam Curriculum (Topics): https://github.com/cncf/curriculum Candidate Handbook: https://www.cncf.io/certification/candidate-handbook Exam Tips: http://training.linuxfoundation.org/go//Important-Tips-CKA-CKAD Use the code – DEVOPS15 – while registering for the CKA or CKAD exams at Linux Foundation to get a 15% discount. |
k8s/StudyNotes
k8s/StudyNotes/cubectl k8s/StudyNotes/Deployments k8s/StudyNotes/Pods k8s/StudyNotes/Services
Certified Kubernetes Administrator: https://www.cncf.io/certification/cka/
Exam Curriculum (Topics): https://github.com/cncf/curriculum
Candidate Handbook: https://www.cncf.io/certification/candidate-handbook
Exam Tips: http://training.linuxfoundation.org/go//Important-Tips-CKA-CKAD
Use the code – DEVOPS15 – while registering for the CKA or CKAD exams at Linux Foundation to get a 15% discount.
- kubeadm
- deploys all the kubernetes services downloaded from web
- Kube-Scheduler
- Filter Nodes (Pod cant fit)
- Rank Nodes (Compare resources left, try to balance cpu/mem usage)
- kubelet - captain on each Worker Node
- Registers with Master node, reports status and executes
Always manual install wget https://storage.googleapis.com/kubernetes-release/release/v1.xx.x/bin/linux/amd64/kubelet
- Not kubeadm managed.
- Needs tls bootstrap
- Kube-proxy - run on each node, service's virtual component
- All pods can see all other pods, through POD Network, by IP/Name. Exposed through service: eg. db(IP)
- Watches for service creation, and then configure network e.g. Iptables to forward to actual pod.
- Install: download wget to install or
- kubeadm will deploy it as deamon set to each pod in namespace kube-system
- PODs
- smallest object in k8s, contains containers, can contain one or more containers
- scale service by creating more pod instances.
- additional container could be helper container.
- network space is shared between containers in the same pod, they can communicate on localhost.
- k8s Controllers - the brains
kind: ReplicaSets - Replication controller -> newer -> Replica Sets
yml definition ReplicationController same 4 sections as other configs
- apiVersion: v1
kind: ReplicationController
- metadata:
- name: myapp-rc labels:
- app: myapp type: front-end
- name: myapp-rc labels:
- spec:
- template:
<pod definition nested, with same 2 sections, metadata, spec>
- template:
yml definition newer ReplicationSet, requires selector:
apiVersion: apps/v1 kind: ReplicaSet metadata: name: myapp-rc labels: app: myapp type: front-end selector: app: myapp type: front-end
- spec:
- template:
<pod definition nested, with same 2 sections, metadata, spec>
- matchLabels:
- type: front-end
- template:
- spec:
kind: Deployments - Encapsulates ReplicaSet that Encapsulate Pods
- Can have deployment and replacement policy
kind: ResourceQuote
- spec:
- hard:
- cpu:
- hard:
- spec:
- kind: Service ,
Service-NodePort k8s-Obj-bind external node port to internal. NodePort is external port 30000-32767
apiVersion: v1 kind: Service metadata: name: myapp-service spec: type: NodePort ports: - targetPort: 80 ->POD port: 80 ->This service local ip port (Optional) nodePort: 30008 ->Node external port listening on host, same port on all Nodes! selector: app: myapp type: front-end
Service-!ClusterIP internal network, default type
apiVersion: v1 kind: Service metadata: name: back-end-service spec: type: ClusterIP << Default if not specified ports: - targetPort: 80 port: 80 selector: name: my-app type: back-end
Service-LoadBalancer - Configure external LB
apiVersion: v1 kind: Service metadata: name: myapp-service spec: type: Loadbalancer ports: - targetPort: 80 port: 80 nodePort: 30008 selector: name: my-app type: back-end