OpenShift వర్చువలైజేషన్ (అప్స్ట్రీమ్ ప్రాజెక్ట్ - కుబెర్నెట్స్: KubeVirt, చూడండి. и ), nee కంటైనర్-నేటివ్ వర్చువలైజేషన్, ఓపెన్షిఫ్ట్ ప్లాట్ఫారమ్ యొక్క కార్యాచరణగా పరిచయం చేయబడింది, ఇది ప్రాథమిక కుబెర్నెట్స్ ఎంటిటీలుగా వర్చువల్ మిషన్లను (VMలు) అమలు చేయడానికి మరియు నిర్వహించడానికి రూపొందించబడింది. సాంకేతికతలోని ప్రాథమిక వ్యత్యాసాల కారణంగా ఈ రకమైన పని సాంకేతికంగా సవాలుగా ఉంది. ఈ లక్ష్యాన్ని సాధించడానికి, మేము Red Hat Enterprise Linux మరియు KVM ఆధారంగా సుపరిచితమైన సాంకేతికతలను ఉపయోగించాము, ఇవి చాలా సంవత్సరాలుగా మాతో ఉన్నాయి మరియు వాటి ప్రభావాన్ని నిరూపించాయి.

ఈ కథనంలో, మేము ఓపెన్షిఫ్ట్ వర్చువలైజేషన్ యొక్క సాంకేతిక అంశాలను పరిశీలిస్తాము, ఇది VMలు మరియు కంటైనర్లను ఒకే వేదికగా నిర్వహించే ఒకే ప్లాట్ఫారమ్లో సహజీవనం చేయడం సాధ్యం చేస్తుంది.
గణన పనులు
కంటైనర్లు ప్రక్రియలను వేరుచేయడానికి మరియు వనరులను నిర్వహించడానికి నేమ్స్పేస్లు మరియు cgroups వంటి Linux కెర్నల్ మెకానిజమ్లను ఉపయోగిస్తాయి. సాధారణంగా ప్రక్రియలను పైథాన్, జావా అప్లికేషన్లు లేదా ఎక్జిక్యూటబుల్ ఫైల్లుగా అర్థం చేసుకుంటారు, అయితే వాస్తవానికి అవి బాష్, ఇమాక్స్ లేదా విమ్ వంటి ఏవైనా ప్రక్రియలు కావచ్చు.
వర్చువల్ మిషన్ అంటే ఏమిటి? హైపర్వైజర్ కోణం నుండి, ఇది కూడా ఒక ప్రక్రియ. కానీ అప్లికేషన్ ప్రాసెస్ కాదు, కానీ నిర్దిష్ట VMని అమలు చేయడానికి KVM ప్రక్రియ బాధ్యత వహిస్తుంది.

కంటైనర్ ఇమేజ్ KVM వర్చువల్ మెషీన్కు అవసరమైన అన్ని సాధనాలు, లైబ్రరీలు మరియు ఫైల్లను కలిగి ఉంటుంది. మేము నడుస్తున్న VM యొక్క పాడ్ను పరిశీలిస్తే, అక్కడ సహాయకులు మరియు qemu-kvm ప్రక్రియలు మనకు కనిపిస్తాయి. అదనంగా, మేము qemu-img, qemu-nbd మరియు virsh వంటి వర్చువల్ మిషన్లను నిర్వహించడానికి KVM సాధనాలకు ప్రాప్యతను కలిగి ఉన్నాము.

వర్చువల్ మెషీన్ ఒక పాడ్ కాబట్టి, ఇది కుబెర్నెట్స్లోని పాడ్ యొక్క అన్ని కార్యాచరణలను స్వయంచాలకంగా వారసత్వంగా పొందుతుంది. VM పాడ్లు, సాధారణ పాడ్ల మాదిరిగానే, షెడ్యూలర్ స్కీమ్లు మరియు టైంట్స్, టాలరేషన్స్, అఫినిటీ మరియు యాంటీ-అఫినిటీ వంటి ప్రమాణాలకు లోబడి ఉంటాయి. మీరు అధిక లభ్యత మొదలైన వాటి ప్రయోజనాలను కూడా పొందుతారు. అయితే, ఒక ముఖ్యమైన వ్యత్యాసం ఉంది: సాధారణ పాడ్లు సాధారణ అర్థంలో హోస్ట్ నుండి హోస్ట్కు మారవు. ఒక నోడ్ ఆఫ్లైన్కు వెళితే, దానిపై ఉన్న పాడ్ రద్దు చేయబడుతుంది మరియు క్లస్టర్లోని మరొక నోడ్కి మళ్లీ కేటాయించబడుతుంది. మరియు వర్చువల్ మెషీన్ విషయంలో, మేము ప్రత్యక్ష వలసలను చూడాలని ఆశిస్తున్నాము.
ఈ అంతరాన్ని పరిష్కరించడానికి, వర్కర్ నోడ్ల మధ్య VMల యొక్క ప్రత్యక్ష వలసలను ప్రారంభించడం, పర్యవేక్షించడం మరియు నిర్వహించడం కోసం బాధ్యత వహించే లైవ్ మైగ్రేషన్ మెకానిజంను వివరించడానికి అనుకూల వనరుల నిర్వచనం (CDR) సృష్టించబడింది.
apiVersion: kubevirt.io/v1alpha3
kind: VirtualMachineInstanceMigration
metadata:
name: migration-job
spec:
vmiName: fedora
నోడ్ డియాక్టివేట్ చేయబడినప్పుడు, లైవ్ మైగ్రేషన్ని ఎవిక్షన్ స్ట్రాటజీగా సెట్ చేసిన వర్చువల్ మిషన్ల కోసం మైగ్రేషన్ టాస్క్లు ఆటోమేటిక్గా సృష్టించబడతాయి. ఈ విధంగా మీరు క్లస్టర్ నోడ్ల మధ్య కదులుతున్నప్పుడు వర్చువల్ మిషన్ల ప్రవర్తనను నియంత్రించవచ్చు. మీరు లైవ్ మైగ్రేషన్ని కాన్ఫిగర్ చేయవచ్చు మరియు అన్ని ఇతర పాడ్ల మాదిరిగానే VMని నిర్వహించవచ్చు.
నెట్వర్క్
ఏదైనా కుబెర్నెటెస్ సిస్టమ్ సాఫ్ట్వేర్ SDN నెట్వర్క్లను ఉపయోగించి నోడ్లు మరియు పాడ్ల మధ్య కమ్యూనికేషన్ను అందిస్తుంది. OpenShift మినహాయింపు కాదు మరియు వెర్షన్ 3 నుండి ప్రారంభించి, దీని కోసం డిఫాల్ట్గా OpenShiftSDNని ఉపయోగిస్తుంది. అదనంగా, OpenShift 4 Multus అని పిలువబడే మరొక కొత్త ఫీచర్ను కలిగి ఉంది, ఇది బహుళ నెట్వర్క్లను అందుబాటులో ఉంచడానికి మరియు వాటికి ఏకకాలంలో పాడ్లను కనెక్ట్ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది.

Multusని ఉపయోగించి, నిర్వాహకుడు అదనపు CNI నెట్వర్క్లను నిర్వచించవచ్చు, అవి ప్రత్యేక క్లస్టర్ నెట్వర్క్ ఆపరేటర్ ద్వారా క్లస్టర్పై అమర్చబడతాయి మరియు కాన్ఫిగర్ చేయబడతాయి. పాడ్లు ఈ నెట్వర్క్లలో ఒకటి లేదా అంతకంటే ఎక్కువ వాటికి కనెక్ట్ చేయబడతాయి, సాధారణంగా ప్రామాణిక OpenShiftSDN మరియు అదనపు ఇంటర్ఫేస్. SR-IOV పరికరాలు, ప్రామాణిక Linux వంతెన, MACVLAN మరియు IPVLAN పరికరాలు మీ VMకి అవసరమైతే ఉపయోగించబడతాయి. eth1 ఇంటర్ఫేస్లో బ్రిడ్జ్ నెట్వర్క్ కోసం Multus CNIని ఎలా సెట్ చేయాలో క్రింది బొమ్మ చూపిస్తుంది:
apiVersion: operator.openshift.io/v1
kind: Network
metadata:
name: cluster
spec:
additionalNetworks:
- name: multus1
rawCNIConfig: '{ "cniVersion": "0.3.1", "type": "bridge", "master": "eth1", "ipam":
{ "type": "static", "addresses": [ { "address": "191.168.1.1/24" } ] } }'
type: Raw
OpenShift వర్చువలైజేషన్కు సంబంధించి, SDNని దాటవేస్తూ VMని నేరుగా బాహ్య నెట్వర్క్కి కనెక్ట్ చేయవచ్చని దీని అర్థం. Red Hat వర్చువలైజేషన్ లేదా VMware vSphere నుండి OpenShiftకి మైగ్రేట్ చేయబడిన వర్చువల్ మిషన్లకు ఇది ముఖ్యమైనది, ఎందుకంటే మీరు రెండవ OSI లేయర్కు యాక్సెస్ కలిగి ఉంటే, నెట్వర్క్ సెట్టింగ్లలో ఎటువంటి మార్పు ఉండదు. VM SDNని దాటవేసే నెట్వర్క్ చిరునామాను కలిగి ఉండవచ్చని కూడా దీని అర్థం. అందువల్ల, మేము ప్రత్యేక నెట్వర్క్ ఎడాప్టర్లను సమర్థవంతంగా ఉపయోగించవచ్చు లేదా నెట్వర్క్లోని నిల్వ సిస్టమ్కు నేరుగా కనెక్ట్ చేయవచ్చు...
ఓపెన్షిఫ్ట్ వర్చువలైజేషన్ వర్చువల్ మిషన్లను నెట్వర్క్కి ఎలా సృష్టించాలి మరియు కనెక్ట్ చేయాలి అనే దాని గురించి మీరు మరింత తెలుసుకోవచ్చు ... కాకుండా, , OpenShift వర్చువలైజేషన్లో భాగంగా అమలు చేయబడింది, హైపర్వైజర్ల క్రింద ఉపయోగించబడే భౌతిక నోడ్లపై నెట్వర్క్ కాన్ఫిగరేషన్లను సృష్టించడానికి మరియు నిర్వహించడానికి మరొక సుపరిచితమైన మార్గాన్ని అందిస్తుంది.
నిల్వ
ఓపెన్షిఫ్ట్ వర్చువలైజేషన్లో వర్చువల్ మెషీన్ డిస్క్లను కనెక్ట్ చేయడం మరియు నిర్వహించడం అనేది స్టోరేజ్ క్లాసెస్, పెర్సిస్టెంట్ వాల్యూమ్క్లైమ్స్ (పివిసి) మరియు పెర్సిస్టెంట్ వాల్యూమ్ (పివి), అలాగే కుబెర్నెట్స్ ఎన్విరాన్మెంట్ కోసం స్టోరేజ్ ప్రోటోకాల్స్ స్టాండర్డ్ వంటి కుబెర్నెట్స్ కాన్సెప్ట్లను ఉపయోగించి నిర్వహించబడుతుంది. ఇది Kubernetes అడ్మినిస్ట్రేటర్లు మరియు అప్లికేషన్ టీమ్లకు కంటైనర్లు మరియు వర్చువల్ మెషీన్లను నిర్వహించడానికి ఒక సాధారణ, సుపరిచితమైన మార్గాన్ని అందిస్తుంది. మరియు వర్చువలైజేషన్ ఎన్విరాన్మెంట్ల యొక్క చాలా మంది నిర్వాహకులకు, ఈ కాన్సెప్ట్ సుపరిచితమైనదిగా అనిపించవచ్చు ఎందుకంటే ఇది ఓపెన్స్టాక్ మరియు అనేక ఇతర క్లౌడ్ ప్లాట్ఫారమ్లలో ఉపయోగించే VM కాన్ఫిగరేషన్ ఫైల్లు మరియు డిస్క్లను వేరు చేసే అదే సూత్రాన్ని ఉపయోగిస్తుంది.
అయినప్పటికీ, మేము ప్రతిసారీ VM కోసం కొత్త డిస్క్ని సృష్టించలేము, ఎందుకంటే హైపర్వైజర్ నుండి OpenShiftకి మైగ్రేట్ చేస్తున్నప్పుడు, మనం డేటాను సేవ్ చేయాలి. అవును, మేము కొత్త VMని అమలు చేసినప్పుడు కూడా, దీన్ని మొదటి నుండి సృష్టించడం కంటే టెంప్లేట్ నుండి చేయడం ఎల్లప్పుడూ వేగంగా ఉంటుంది. అందువల్ల, ఇప్పటికే ఉన్న డిస్క్లను దిగుమతి చేసుకోవడానికి మనకు కార్యాచరణ అవసరం.
ఈ పనిని సులభతరం చేయడానికి, OpenShift వర్చువలైజేషన్ కంటెయినరైజ్డ్ డేటా ఇంపోర్టర్ (CDI) ప్రాజెక్ట్ను అమలు చేస్తుంది, ఇది PVC ఎంట్రీని సృష్టించడానికి బహుళ మూలాల నుండి డిస్క్ల డిస్క్ ఇమేజ్లను దిగుమతి చేయడాన్ని తగ్గిస్తుంది.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: "fedora-disk0"
labels:
app: containerized-data-importer
annotations:
cdi.kubevirt.io/storage.import.endpoint: "http://10.0.0.1/images/Fedora-Cloud-Base-31-1.9.x86_64.qcow2"
spec:
storageClassName: ocs-gold
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20Gi
ఈ ఎంట్రీ CDIని సక్రియం చేస్తుంది, దిగువ చిత్రంలో చూపిన చర్యల క్రమాన్ని ట్రిగ్గర్ చేస్తుంది:

CDI పూర్తయిన తర్వాత, PVC ఉపయోగం కోసం సిద్ధంగా ఉన్న వర్చువల్ మెషీన్ డిస్క్ను కలిగి ఉంటుంది మరియు ప్రామాణిక OpenShift ఆకృతికి మార్చబడుతుంది...
OpenShift వర్చువలైజేషన్తో పని చేస్తున్నప్పుడు, OpenShift కంటైనర్ స్టోరేజ్ (OCS), Ceph ఫైల్ సిస్టమ్పై ఆధారపడిన Red Hat సొల్యూషన్, ఇది కంటైనర్ల కోసం నిరంతర నిల్వ కార్యాచరణను అమలు చేస్తుంది. ప్రామాణిక PVC యాక్సెస్ పద్ధతులతో పాటు - RWO (బ్లాక్) మరియు RWX (ఫైల్) - OCS ముడి బ్లాక్ పరికరాల కోసం RWXని అందిస్తుంది, ఇది అధిక పనితీరు అవసరాలతో అప్లికేషన్ల కోసం బ్లాక్ యాక్సెస్ను భాగస్వామ్యం చేయడానికి చాలా ఉపయోగకరంగా ఉంటుంది. అదనంగా, OCS కొత్త ఆబ్జెక్ట్ బకెట్ క్లెయిమ్ స్టాండర్డ్కు మద్దతు ఇస్తుంది, ఇది ఆబ్జెక్ట్ డేటా నిల్వను నేరుగా ఉపయోగించడానికి అప్లికేషన్లను అనుమతిస్తుంది.
కంటైనర్లలో వర్చువల్ మిషన్లు
ఇది ఎలా పని చేస్తుందో తనిఖీ చేయడంలో మీకు ఆసక్తి ఉంటే, OpenShift వర్చువలైజేషన్ ఇప్పటికే OpenShift 3.11 మరియు అంతకంటే ఎక్కువ భాగం టెక్ ప్రివ్యూ వెర్షన్లో అందుబాటులో ఉందని తెలుసుకోండి. ఇప్పటికే ఉన్న OpenShift సబ్స్క్రిప్షన్ యొక్క యజమానులు OpenShift వర్చువలైజేషన్ను పూర్తిగా ఉచితంగా మరియు ఎటువంటి అదనపు దశలు లేకుండా ఉపయోగించవచ్చు. ఈ పోస్ట్ సమయంలో, OpenShift 4.4 మరియు OpenShift వర్చువలైజేషన్ 2.3 మీరు మునుపటి సంస్కరణలను ఉపయోగిస్తుంటే, మీరు తాజా లక్షణాలను పొందడానికి అప్గ్రేడ్ చేయాలి. OpenShift వర్చువలైజేషన్ యొక్క పూర్తి మద్దతు ఉన్న వెర్షన్ 2020 రెండవ భాగంలో విడుదల చేయాలి.
మరింత సమాచారం కోసం దయచేసి సంప్రదించండి ఇన్స్టాలేషన్ సూచనల కోసం, సహా , ఇది బాహ్య నెట్వర్క్లను సెటప్ చేయడం గురించి సమాచారాన్ని అందిస్తుంది.
మూలం: www.habr.com
