Successfully reported this slideshow.
Your SlideShare is downloading.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

0

Share

Download Now Download

Download to read offline

OpenStack Türkiye 15.Meetup Ankara: Containers, Kubernetes and OpenStack

Download Now Download

Download to read offline

22.03.2018 tarihinde ODTÜ TEKNOKENT'te Red Hat Türkiye'den Birol BİLGİN tarafından yapılan sunumdur.

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all
  • Be the first to comment

  • Be the first to like this

OpenStack Türkiye 15.Meetup Ankara: Containers, Kubernetes and OpenStack

  1. 1. Containers, Kubernetes and OpenStack Birol Bilgin @ Red Hat
  2. 2. Yasal Uyarı Bu sunum kişisel olup, kesinlikle Red Hat ile herhangi bağlantısı bulunmamaktadır. Sunumun içeriği tamamen kendi bilgi ve görüşlerimi yansıtmaktadır.
  3. 3. Konular ● Containers ○ Container nedir? ○ Linux Containers teknik detaylar ○ Hangi problemleri çözüyor ○ Demo ● Kubernetes ○ Kubernetes nedir? ○ Kubernetes Projesi ○ Neden Kubernetes? ○ Kubernetes mimarisi ■ ETCD ■ Management Bileşenleri ■ Node Bileşenleri ○ Kubernetes kavramlar ○ OpenShift nedir? ○ Eğilimler, beklentiler ○ Demo ● OpenStack ○ OpenStack Nedir? ○ OpenStack Container entegrasyonu ■ Zun ■ Magnum ■ Kuryr ■ Kolla
  4. 4. Containers
  5. 5. Container Nedir? ● Wikipedia: A container is any receptacle or enclosure for holding a product used in storage, packaging, and shipping. ● “Konteyner bir ürünü depolamak, paketlemek ve taşımak için kullanılan herhangi bir kapalı cisim.”
  6. 6. Container Tarihçesi
  7. 7. Linux Containers ● Linux Namespaces ○ Process Namespace ○ Network Namespace ○ Mount Namespace ○ IPC Namespace ○ User Namespace ○ UTC Namespace ● Cgroups ● SELinux, AppArmor ● Seccomp ● Capabilities ● chroot ● Layer Filesystem ○ OverlayFS ○ Thin provisioned LVM ○ ZFS
  8. 8. Sanallaştırmadan Farkı Ne?
  9. 9. Hangi Problemleri Çözüyor ● Uygulama bütün kütüphaneleri ile birlikte paketleniyor ○ Geliştirme ortamında çalışan prod ortamında da çalışıyor ○ Kendi makinende çalışan bulut üzerinde de aynı şekilde çalışıyor ○ Aynı uygulamayı farklı kütüphane versiyonları ile aynı sunucu üzerinde çalıştırma imkanı sunuyor ● VM lere göre daha düşük kaynak tüketimi ● Çok daha hızlı başlama süreleri ● Kolay bir şekilde birlikte kullanma olanağı ● Değiştirmesi çok kolay
  10. 10. DEMO
  11. 11. KUBERNETES - K8S
  12. 12. Kubernetes Nedir? ● “Kubernetes” eski Yunanca’da “dümenci” manasına geliyor. Ayrıca “vali” ve “sibernetik” kelimelerinin kökü. ● Google tarafından geliştirilip 2014 yılında açık kaynak olarak sunuldu. ● Google da 10 yıldan uzun süre kazanılan container tecrübesi üzerine geliştirildi. Kendi içlerinde kullandıkları aracın ismi Borg. ● Google herşeyi container’lar içinde çalıştırıyor VM’ler dahil. ● Google her hafta 2 milyar kadar container çalıştırıyor. ● Google daha sonra Kubernetes’i Cloud Native Computing Foundation’a (CNCF) verdi. ● Go ile yazılmış ● Apache 2.0 Lisans
  13. 13. Kubernetes Projesi
  14. 14. Neden Kubernetes? ● Network ○ Container’lar nasıl bir birine ulaşacak veya engellenecek? ● Scheduling ○ Hangi Container’ı nerede çalıştırılacak? ○ Kaynakları CPU Memory vs. nasıl etkin kullanılacak? ● Depolama ○ Oluşturulan Container’lara depolama nereden ve nasıl sağlanacak? ● Automation ○ Bir Node kapandığında veya kesinti gerektiğinde Container’lar nasıl taşınacak? ○ Nasıl uygulamamın sağlığını izleyebilir, gerektiğinde yeniden başlatabilirim? ○ Container sayısını gelen yüke göre nasıl artırıp indirebilirim? ● Mikro Servis kullanım gereksinimleri ○ Oluşturulan uygulamalara nasıl ulaşılacak? ○ Konfigürasyon nasıl uygulamalarda kullanılacak? ○ Şifre yönetimi. DB, S3 vb.. Şifreleri nerede tutulacak nasıl kullanılacak? ○ Uygulamanın yeni versiyonu nasıl kesintisiz yüklenecek?
  15. 15. Kubernetes Mimarisi
  16. 16. ETCD ● Yüksek erişilebilir, key-value database. ● Geri bildirim yapabiliyor ● Raft consensus algoritması üzerine kurulu ● Go ile yazılmış ● Apache 2.0 Lisans
  17. 17. Management Bileşenleri ● Management Bileşenleri ○ API Server ■ REST arayüzü sağlar ■ Bütün istemciler, node’lar, kullanıcılar ve uygulamalar bu arayüzü kullanır ○ Controller-Manager ■ Cluster’ın durumunu izler ve istenilen duruma çeker ○ Scheduler ■ İş yüklerini değişik kriterlere göre uygun kaynaklara yerleştirir ○ Cloud-Controller-Manager ■ Üzerinde çalıştığı buluta özel kabiliyetler sağlar
  18. 18. Node Bileşenleri ● Node Bileşenleri ○ Kubelet ■ Pod’ların hayat döngüsünü yönetmekten sorumludur ■ YAML container manifest kullanır ● Dosya ● HTTP yolu ● ETCD uyarı aksiyonu ● Sunucu modu ○ Kube-proxy ■ Network kurallarını yönetir ● Userspace (Legacy) ● iptables ● ipvs (beta in 1.9) ○ Container Runtime ■ Container’ları yöneten CRI uyumlu program ■ (docker, rktlet, cri-o, kata vs...)
  19. 19. Kubernetes Kavramlar ● Kavramlar ○ Pod ○ Labels, Selectors and Annotations ○ ReplicaSet ○ Service ○ PersistentVolumes ○ Persistent VolumeClaims ○ Diğer Kavramlar
  20. 20. Pod ● Pod Kubernetes içinde en küçük iş veya yönetilecek kaynak ● Birden fazla container’dan oluşabilir ● Depolama ve Network paylaşılır ● Her Poda bir IP adresi atanır ● Pod fanidir, ölebilir ama aynı kimlik ile yeniden oluşturulamaz apiVersion: v1 kind: Pod metadata: name: myapp-pod labels: app: MyApp spec: containers: - name: myapp-container image: busybox command: ['sh', '-c', 'echo Hello Kubernetes! && sleep 3600']
  21. 21. Labels, Selectors and Annotations ● Label ○ Bir grup objeyi belirlemek, tanımlamak ve tarif etmek için kullanılan key-value çifti ○ Yazım kuralları çok kısıtlı ● Selector ○ Label’ları kullanarak objeleri filtreler veya seçer ● Annotation ○ Herhangi bir bilginin tutulduğu key-value çifti ○ Annotation’lar label’lar gibi tuttukları değerlerde kısıtlı değiller apiVersion: v1 kind: Pod metadata: name: cuda-test spec: containers: - name: cuda-test image: "k8s.gcr.io/cuda-vector-add:v0.1" resources: limits: nvidia.com/gpu: 1 nodeSelector: accelerator: nvidia-tesla-p100 selector: matchLabels: component: redis matchExpressions: - {key: tier, operator: In, values: [cache]} - {key: environment, operator: NotIn, values: [dev]} metadata: name: my-service annotations: service.beta.kubernetes.io/openstack- internal-load-balancer: "true"
  22. 22. ReplicaSet ● Method of managing pod replicas and their lifecycle. Their scheduling, scaling, and deletion. ● Tek işi eğer gerekenden az ise yenilerini başlat eğer fazla ise fazla olanları öldür ● ReplicationController’dan farkı set-based selector’ları desteklemesi apiVersion: apps/v1 kind: ReplicaSet metadata: name: frontend labels: app: guestbook tier: frontend spec: replicas: 3 selector: matchLabels: tier: frontend matchExpressions: - {key: tier, operator: In, values: [frontend]} template: metadata: labels: app: guestbook tier: frontend spec: containers: - name: php-redis image: frontend:v3 resources: ports: - containerPort: 80
  23. 23. Service ● Uygulamara sanal IP veya DNS ile ulaşmayı sağlar ● Pod’ları label selector’lar ile seçer ● Sanal IP kube-proxy tarafından yönetilir ○ iptables kayıtlarını değiştirir (varsayılan) kind: Service apiVersion: v1 metadata: name: my-service spec: selector: app: MyApp ports: - protocol: TCP port: 80 targetPort: 9376
  24. 24. PersistentVolume ● PersistentVolume (PV) bir depolama kaynağını sunar. ● PV’ler genelde depolama sağlayan kaynaklara bağlıdır NFS, GCEPersistentDisk, RBD vs.. ● Kullanılmadan önce provizyonlanırlar ● Hayat döngüleri Pod lardan bağımsızdır ● Ayrıca dinamik depolama provizyonlama da mümkün apiVersion: v1 kind: PersistentVolume metadata: name: pv0003 spec: capacity: storage: 5Gi volumeMode: Filesystem accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Recycle storageClassName: slow mountOptions: - hard - nfsvers=4.1 nfs: path: /tmp server: 172.17.0.2
  25. 25. PersistentVolumeClaim ● PersistentVolumeClaim (PVC) depolama alanın direk olarak kullanılması yerine bir takım şartları sağlayan bir alan için istek yapılmasıdır kind: PersistentVolumeClaim apiVersion: v1 metadata: name: myclaim spec: accessModes: - ReadWriteOnce volumeMode: Filesystem resources: requests: storage: 8Gi storageClassName: slow selector: matchLabels: release: "stable" matchExpressions: - {key: environment, operator: In, values: [dev]}
  26. 26. Kubernetes Diğer Kavramlar - 1 ● Namespaces ○ Kullanıcılar ve projeler için izole edilmiş çalışma alanları ● Ingress ○ L7 load balancing ● Deployments ○ Declarative version updates ● Jobs ○ Bir kere çalışan işler ● Autoscaling ○ Otomatik olarak kopya sayısının ayarlanması ● DaemonSets ○ Herhangi bir pod’u her node veya seçilmiş node’larda çalışması ● StatefulSet ○ Stateful (sabit) dağıtık sistem desteği
  27. 27. Kubernetes Diğer Kavramlar - 2 ● Role Based Access Control (RBAC) ○ Kullanıcıların objelere ulaşımını kontrol eder ● Multiple Schedulers ● Flexible Scheduling Constraints ○ Affinity (yakınlık), anti-affinity(uzaklık), taints (scheduling kısıtları), tolerations (tolere etmek) ● Automatic Cluster Scaling ○ K8s dış servislere signal göndererek cluster(küme)’nin otomatik olarak ölçeklenmesini sağlar ● Cloud Provider Integration ○ GCP, AWS, Azure, OpenStack, vSphere ● Network Policy ○ Network ingress policy
  28. 28. Kubernetes Diğer Kavramlar - 3 ● Operators ○ API’ler ile sistemlerin otomatik yönetilmesi ○ K8s extensions - uzantılarını kullanarak entegre olur ○ etcd, Prometheus, elasticsearch, memcached, mongodb, rook, etc. ● Authentication Providers ○ Webhook’lar ile entegre oluyor. OpenID Connect, OAuth2, LDAP, SAML, etc. ● Helm: Package Manager ○ K8s için uygulama yönetimi ● Extended Network Policy
  29. 29. Networking ● Bütün pod’lar diğer bütün pod’lara NAT kullanılmaksızın ulaşabilmeli ● Bütün node’lar diğer bütün podlara ve podlar da node’lara NAT kullanılmaksızın ulaşabilmeli ● Pod IP adresi cluster’da ne ise kendisi de aynı IP’yi görmeli ● Container Network Interface (CNI) : container runtime ile network plugin’i arasındaki arayüz ○ Calico ○ Cillium ○ Contiv ○ Contrail ○ Flannel ○ GCE ○ kube-router ○ Multus ○ OpenVSwitch ○ OVN ○ Romana ○ Weave
  30. 30. Container Runtime ● Open Container Initiative (OCI) ○ Runtime specification ○ Image specification ● Container Runtime Interface (CRI) ○ Kubernetes’in bir sürü değişik container runtime’larını kullanmasını sağlayan eklenti arayüzü ○ gRPC arayüzünü kullanır ○ Kubernetes 1.5 de kullanılmaya başlandı ● CRI runtime ○ docker + dockershim ○ cri-containerd + containerd ○ rktlet ○ cri-o ○ frakti ○ kata-container
  31. 31. Kubernetes Depolama Pluginleri ● Direk desteklenen depolama çözümleri ○ awsElasticBlockStore ○ azureDisk ○ azureFile ○ cephfs ○ configMap ○ csi ○ downwardAPI ○ emptyDir ○ fc (fibre channel) ● Out-of-Tree Volume Plugins ○ CSI ■ Container Storage Interface (CSI) , container’lara isteğe bağlı depolama sağlamak için geliştirilmeye çalışılan endüstri standardı ○ FlexVolume ■ Eklenti FlexVolume tarafından tanımlanan volume komutlarını destekleyen bir program. Bu eklenti ile direk desteklenmeyen diğer depolama ürünleri de container’lar tarafından kullanılabilir ○ flocker ○ gcePersistentDisk ○ gitRepo ○ glusterfs ○ hostPath ○ iscsi ○ local ○ nfs ○ persistentVolumeClaim ○ projected ○ portworxVolume ○ quobyte ○ rbd ○ scaleIO ○ secret ○ storageos ○ vsphereVolume
  32. 32. Nasıl çalışıyor? Örnek
  33. 33. OpenShift Nedir? ● OpenShift Container Platform (OCP veya OpenShift) Kubernetes artı extra kaynaklardan oluşur (Kubernetes++) ● Kubernetes container çalıştırma ortamı ● OpenShift yazılımcı odaklı, PaaS ○ CI/CD ○ RBAC ○ Source to Image (s2i) ● Open source versiyonun adı Origin ● Üç farklı şekilde sunuluyor ○ OpenShift Container Platform ■ Yönetimi tamamen kullanıcıya ait versiyonu, istenilen bulut veya kendi sistemlerinize kurulabilir ○ OpenShift Online ■ OCP Saas versiyonu, çok kullanıcılı, bedava versiyonu var ○ OpenShift Dedicated ■ Tek kullanıcılı, Red Hat tarafından AWS veya GCW üzerinde kurulup yönetilen versiyonu
  34. 34. Kubernetes Projeler Eğilimler ● Service Catalog ● Istio, Envoy service mesh kullanımı ● Projenin core olarak küçültülüp diğer parçaların üzerinde çalıştırılacağı bir platforma dönüştürülmesi ● Daha kolay genişletilebilir bir platform olması ● Uygulama nedir tanımlanması ● Device desteği, grafik kartı desteği vs..
  35. 35. DEMO
  36. 36. OPENSTACK
  37. 37. OpenStack Nedir? ● Bulut biliş im teknolojilerinin bü tü nleş ik olarak sağ landığ ı altyapı ● Yaygın hipervizö r desteğ i (KVM, Xen, VMware, Hyper-V, LXC) ● Rackspace ve NASA tarafından 2010 yılında baş latılmış ● Python ve Django tabanlı ● Aç ık kaynak kodlu (Apache 2.0 Lisansı), 20 M+ satır kod ● 189 ü lke, 650’den fazla ü retici desteğ i, 30.000’den fazla geliş tirici ● Servis sağ layıcılar, kamu kurumları, eğ itim kurumları, araş tırma merkezleri, telekom operatörleri gibi geniş kullanıcı kitlesi ● Amazon WS, EC2 ve S3 ile tam uyumlu
  38. 38. OpenStack Zun ● Önceki adı Higgins ● Container servisi ● OpenStack üzerinde container oluşturmak ve yönetmek için API sağlar. ● Magnum’dan farklı olarak container’ları OpenStack üzerinden yönetilen kaynaklar olarak kullanır. ● Container yönetimi için cinder-volume ve neutron network bileşenleri ile entegre edilmelidir.
  39. 39. OpenStack Magnum ● OpenStack Containers Team tarafından geliştirilmektedir. ● OpenStack aracılığı ile Kubernetes, Docker Swarm ve Apache Mesos gibi Container Orchestration Engine (COE) yönetimi sağlar. ● İçerisinde Docker ve Kubernetes bulunan işletim sistemi imajını provizyonlamak için Heat kullanır. ● Bu işletim sistemi VM veya bare metal üzerinde çalışabilir. ● Kullanıcılarına self servis container çözümü sunmak isteyen bulut operatörleri için idealdir.
  40. 40. OpenStack Kuryr ● OpenStack’teki ağ ve depolama ortamlarına ağ bağlantısı sağlamak üzere arada köprü görevi görür. ● OpenStack network bileşeni Neutron üzerinde gerekli portları oluşturarak container ile bağlantısını sağlar. ● Kuryr kullanılarak k8s içinde ikinci bir overlay network oluşturulmasına gerek kalmaz. (Kullanılan CNI’a göre değişebilir)
  41. 41. OpenStack Kolla ● OpenStack’in kurulumu ve yönetimi karmaşık bir iş ○ Projeler python modüllerinden oluşuyor ○ HA kurulması ve problemsiz yönetimi çok kolay değil ● OpenStack’in containerlar üzerinde kurulumu ve yönetimi için gerekli bileşenleri sağlar. ● Konfigürasyon yönetimi için Ansible kullanır.
  42. 42. Kaynaklar https://www.docker.com/ http://cri-o.io/ https://katacontainers.io/ https://coreos.com/etcd/docs/latest/ https://kubernetes.io/ https://www.katacoda.com/courses/kubernetes https://www.openshift.com/ https://www.openshift.org/ https://www.cncf.io/ https://kubernetes.io/docs/concepts/service-catalog/ https://istio.io/ https://www.envoyproxy.io/ https://github.com/kubernetes/minikube https://www.openstack.org/
  43. 43. SORULAR

    Be the first to comment

    Login to see the comments

22.03.2018 tarihinde ODTÜ TEKNOKENT'te Red Hat Türkiye'den Birol BİLGİN tarafından yapılan sunumdur.

Views

Total views

1,228

On Slideshare

0

From embeds

0

Number of embeds

481

Actions

Downloads

32

Shares

0

Comments

0

Likes

0

×