ሃይ ሀብር!
በበጋው መጨረሻ ላይ, በርዕሱ ላይ መስራታችንን እንደቀጠልን ልናስታውስዎ እንፈልጋለን
በማንበብ ይደሰቱ!
ይህንን ጽሑፍ በሚጽፉበት ጊዜ የኩበርኔትስ ዕድሜ በግምት ነው።
መያዣዎች በሊኑክስ ውስጥ ሂደቶችን ለማግለል እንደ ልዩ ንድፍ ጀመሩ; ኮንቴይነሮች ከ 2007 ጀምሮ ተካትተዋል
Kubernetes ለምን ተወዳጅ እንደሆነ ለመረዳት ጥቂት ጥያቄዎችን ለመመለስ እንሞክር። ለመጨረሻ ጊዜ ገንቢዎች ማመልከቻዎችን ወደ ምርት እንዴት ማሰማራት እንደሚችሉ መስማማት የቻሉት መቼ ነበር? ምን ያህል ገንቢዎች ከሳጥኑ ውጭ እንደሚቀርቡ መሣሪያዎቹን እንደሚጠቀሙ ያውቃሉ? አፕሊኬሽን እንዴት እንደሚሰራ ያልተረዱ ስንት የደመና አስተዳዳሪዎች አሉ? የእነዚህን ጥያቄዎች መልሶች በዚህ ርዕስ ውስጥ እንመለከታለን.
መሠረተ ልማት እንደ YAML
ከአሻንጉሊት እና ሼፍ ወደ ኩበርኔትስ በሄደው አለም፣ ከትልቅ ለውጦች አንዱ ከ"መሰረተ ልማት እንደ ኮድ" ወደ "መሰረተ ልማት እንደ ዳታ" በተለይም እንደ YAML። በKubernetes ውስጥ ያሉ ሁሉም ሀብቶች፣ ፖድ፣ ውቅሮች፣ የተዘረጉ ምሳሌዎች፣ ጥራዞች፣ ወዘተ ያካተቱ፣ በ YAML ፋይል ውስጥ በቀላሉ ሊገለጹ ይችላሉ። ለምሳሌ:
apiVersion: v1
kind: Pod
metadata:
name: site
labels:
app: web
spec:
containers:
- name: front-end
image: nginx
ports:
- containerPort: 80
ይህ እይታ ለዴቭኦፕስ ወይም ለኤስአርኢ ባለሙያዎች እንደ ፒቲን ወይም ጃቫስክሪፕት ባሉ ቋንቋዎች ኮድ መጻፍ ሳያስፈልጋቸው የሥራ ጫናቸውን ሙሉ በሙሉ እንዲገልጹ ቀላል ያደርገዋል።
መሠረተ ልማትን እንደ መረጃ የማደራጀት ሌሎች ጥቅሞች የሚከተሉትን ያካትታሉ:
- GitOps ወይም Git Operations ሥሪት ቁጥጥር። ይህ አካሄድ ሁሉንም የ Kubernetes YAML ፋይሎችን በgit repositories ውስጥ እንድታስቀምጡ ይፈቅድልሃል፣ ስለዚህ መቼ ለውጥ እንደተደረገ፣ ማን እንደሰራው እና ምን እንደተለወጠ በትክክል መከታተል ትችላለህ። ይህ በድርጅቱ ውስጥ ያሉትን ተግባራት ግልፅነት ያሳድጋል እና አሻሚነትን በማስወገድ በተለይም ሰራተኞች የሚያስፈልጋቸውን ሀብቶች በሚፈልጉበት ቦታ ላይ የአሰራር ቅልጥፍናን ያሻሽላል። በተመሳሳይ ጊዜ የመጎተት ጥያቄን በማዋሃድ በ Kubernetes ሀብቶች ላይ በራስ-ሰር ለውጦችን ማድረግ ቀላል ይሆናል።
- የመጠን አቅም. ግብዓቶች እንደ YAML ሲገለጹ ለክላስተር ኦፕሬተሮች አንድ ወይም ሁለት ቁጥሮች በኩበርኔትስ ምንጭ ውስጥ መለወጥ እና እንዴት እንደሚዛን መለወጥ በጣም ቀላል ይሆናል። ኩበርኔትስ አነስተኛ እና ከፍተኛ የትራፊክ ፍሰትን ለመቆጣጠር በአንድ የተወሰነ የማሰማራት ውቅረት ውስጥ ምን ያህል ዝቅተኛ እና ከፍተኛ መጠን እንደሚያስፈልግ ለማወቅ የሚያስችል አግድም አውቶማቲካሊንግ ፖድ (pods) የማዘጋጀት ዘዴን ይሰጣል። ለምሳሌ፣ በትራፊክ ድንገተኛ መጨናነቅ ምክንያት ተጨማሪ አቅም የሚፈልግ ውቅረት ዘርግተው ከሆነ፣ maxReplicas ከ10 ወደ 20 ሊቀየር ይችላል።
apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
name: myapp
namespace: default
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: myapp-deployment
minReplicas: 1
maxReplicas: 20
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 50
- ደህንነት እና አስተዳደር. YAML ነገሮች በኩበርኔትስ ውስጥ እንዴት እንደሚሰማሩ ለመገምገም በጣም ጥሩ ነው። ለምሳሌ፣ ዋናው የደህንነት ስጋት የስራ ጫናዎችዎ እንደ አስተዳዳሪ ያልሆነ ተጠቃሚ እየሰሩ መሆኑን ነው። በዚህ አጋጣሚ እንደ መሳሪያዎች ያስፈልጉን ይሆናል
ንቀት ፣ YAML/JSON አረጋጋጭ፣ በተጨማሪምየፖሊሲ ወኪል ክፈት , የፖሊሲ ማረጋገጫ አውድ መሆኑን ለማረጋገጥየደህንነት አውድ የሥራ ጫናዎ መያዣው ከአስተዳዳሪ መብቶች ጋር እንዲሄድ አይፈቅድም. ይህ የሚያስፈልግ ከሆነ ተጠቃሚዎች ቀላል ፖሊሲን መተግበር ይችላሉ።rego , ልክ እንደዚህ:
package main
deny[msg] {
input.kind = "Deployment"
not input.spec.template.spec.securityContext.runAsNonRoot = true
msg = "Containers must not run as root"
}
- ከደመና አቅራቢ ጋር የመዋሃድ አማራጮች። ዛሬ ባለው ከፍተኛ ቴክኖሎጂ ውስጥ በጣም ከሚታወቁት አዝማሚያዎች አንዱ በህዝብ ደመና አቅራቢዎች ላይ የስራ ጫናዎችን ማካሄድ ነው። ክፍሉን በመጠቀም
ደመና አቅራቢ Kubernetes ማንኛውም ዘለላ ከሚሰራበት የደመና አቅራቢ ጋር እንዲዋሃድ ይፈቅዳል። ለምሳሌ፣ አንድ ተጠቃሚ በAWS ላይ በኩበርኔትስ አፕሊኬሽን ቢያካሂድ እና ያንን መተግበሪያ በአገልግሎት ማጋለጥ ከፈለገ፣ የደመና አቅራቢው አገልግሎቱን በራስ ሰር እንዲፈጥር ያግዛል።LoadBalancer
የጭነት ሚዛንን በራስ-ሰር ያቀርባልAmazon Elastic Load Balancer ትራፊክን ወደ ትግበራ ፖድ ለማዞር።
ከመጠን በላይ
Kubernetes በጣም extensible ነው እና ገንቢዎች ይወዳሉ. እንደ ፖድ ፣ ማሰማራት ፣ ያሉ ሀብቶች ስብስብ አለ ። StatefulSets
ሚስጥሮች፣ ConfigMaps
ወዘተ. እውነት ነው፣ ተጠቃሚዎች እና ገንቢዎች በቅጹ ውስጥ ሌሎች ሀብቶችን ማከል ይችላሉ።
ለምሳሌ፣ ሃብትን መግለፅ ከፈለግን። CronTab
፣ ከዚያ እንደዚህ ያለ ነገር ማድረግ ይችላሉ-
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: crontabs.my.org
spec:
group: my.org
versions:
- name: v1
served: true
storage: true
Schema:
openAPIV3Schema:
type: object
properties:
spec:
type: object
properties:
cronSpec:
type: string
pattern: '^(d+|*)(/d+)?(s+(d+|*)(/d+)?){4}$'
replicas:
type: integer
minimum: 1
maximum: 10
scope: Namespaced
names:
plural: crontabs
singular: crontab
kind: CronTab
shortNames:
- ct
በኋላ የCronTab ምንጭ እንደዚህ ያለ ነገር መፍጠር እንችላለን፡-
apiVersion: "my.org/v1"
kind: CronTab
metadata:
name: my-cron-object
spec:
cronSpec: "* * * * */5"
image: my-cron-image
replicas: 5
በ Kubernetes ውስጥ ያለው ሌላው አማራጭ ገንቢው የራሱን መግለጫዎች መጻፍ ይችላል.
በማህበረሰቡ ውስጥ ገንቢዎች የራሳቸውን ኦፕሬተሮች እንዲፈጥሩ ቀላል የሚያደርጉ ብዙ መሳሪያዎች አሉ። ከነሱ መካክል -
$ operator-sdk new my-operator --repo github.com/myuser/my-operator
ይህ YAML ፋይሎችን እና የጎላንግ ኮድን ጨምሮ ለኦፕሬተርዎ ሁሉንም የቦይለር ኮድ ይፈጥራል።
.
|____cmd
| |____manager
| | |____main.go
|____go.mod
|____deploy
| |____role.yaml
| |____role_binding.yaml
| |____service_account.yaml
| |____operator.yaml
|____tools.go
|____go.sum
|____.gitignore
|____version
| |____version.go
|____build
| |____bin
| | |____user_setup
| | |____entrypoint
| |____Dockerfile
|____pkg
| |____apis
| | |____apis.go
| |____controller
| | |____controller.go
ከዚያ የሚፈለጉትን ኤፒአይዎች እና መቆጣጠሪያ ማከል ይችላሉ፣ እንደዚህ፡-
$ operator-sdk add api --api-version=myapp.com/v1alpha1 --kind=MyAppService
$ operator-sdk add controller --api-version=myapp.com/v1alpha1 --kind=MyAppService
ከዚያ በመጨረሻ ኦፕሬተሩን ሰብስበው ወደ መያዣዎ መዝገብ ይላኩት፡-
$ operator-sdk build your.container.registry/youruser/myapp-operator
ገንቢው የበለጠ ቁጥጥር ከፈለገ፣ በGo ፋይሎች ውስጥ ያለው የቦይለር ሰሌዳ ኮድ ሊቀየር ይችላል። ለምሳሌ, የመቆጣጠሪያውን ልዩ ነገሮች ለማሻሻል, በፋይሉ ላይ ለውጦችን ማድረግ ይችላሉ controller.go
.
ሌላ ፕሮጀክት
$ kubectl kudo install zookeeper
$ kubectl kudo install kafka
እና ከዚያ በሌላ ትዕዛዝ ያዋቅሩት፡-
$ kubectl kudo install kafka --instance=my-kafka-name
-p ZOOKEEPER_URI=zk-zookeeper-0.zk-hs:2181
-p ZOOKEEPER_PATH=/my-path -p BROKER_CPUS=3000m
-p BROKER_COUNT=5 -p BROKER_MEM=4096m
-p DISK_SIZE=40Gi -p MIN_INSYNC_REPLICAS=3
-p NUM_NETWORK_THREADS=10 -p NUM_IO_THREADS=20
ፈጠራ
ባለፉት ጥቂት አመታት፣ ዋና ዋና የኩበርኔትስ ልቀቶች በየጥቂት ወሩ እየወጡ ነው - ማለትም፣ በዓመት ከሶስት እስከ አራት ዋና ዋና ልቀቶች። በእያንዳንዳቸው ውስጥ የገቡት አዲስ ባህሪያት ቁጥር አይቀንስም. ከዚህም በላይ በእነዚህ አስቸጋሪ ጊዜያት እንኳን የመቀነስ ምልክቶች አይታዩም - አሁን ያለውን ሁኔታ ይመልከቱ
አዳዲስ ችሎታዎች በተለያዩ የስራ ጫናዎች ውስጥ ስራዎችን በተለዋዋጭነት እንዲሰበስቡ ያስችሉዎታል። በተጨማሪም ፕሮግራመሮች መተግበሪያዎችን በቀጥታ ወደ ምርት ሲያሰማሩ የበለጠ ቁጥጥር ይደሰታሉ።
ማህበረሰብ
ሌላው የኩበርኔትስ ተወዳጅነት ዋነኛ ገጽታ የማህበረሰቡ ጥንካሬ ነው። እ.ኤ.አ. በ2015፣ እትም 1.0 ላይ ሲደርስ ኩበርኔትስ በስፖንሰር ተደግፏል
የተለያዩ ማህበረሰቦችም አሉ።
የክላውድ ቤተኛ ፋውንዴሽን CloudNativeCon/KubeConን ያስተናግዳል፣ይህም በተጻፈበት ጊዜ በአለም ላይ ትልቁ የክፍት ምንጭ ኮንፈረንስ ነው። በተለምዶ በዓመት ሦስት ጊዜ የሚካሄደው, Kubernetes እና ስርዓተ-ምህዳሩን ለማሻሻል የሚፈልጉ በሺዎች የሚቆጠሩ ባለሙያዎችን ያሰባስባል, እንዲሁም በየሦስት ወሩ የሚታዩ አዳዲስ ባህሪያትን ይማራሉ.
ከዚህም በላይ የክላውድ ቤተኛ ፋውንዴሽን አለው።
በመጨረሻም፣ እኔ ኩበርኔትስ ያለ መላው ማህበረሰብ ንቃተ-ህሊና ጥረቶች ስኬታማ እንደማይሆን አምናለሁ፣ ሰዎች አንድ ላይ ተጣብቀው ነገር ግን በተመሳሳይ ጊዜ አዲስ መጤዎችን ወደ መንጋው ይቀበላሉ።
የወደፊቱን
ገንቢዎች ወደፊት ሊያጋጥሟቸው ከሚችሉት ዋነኛ ተግዳሮቶች አንዱ በኮዱ ዝርዝር ጉዳዮች ላይ እንጂ በሚሰራባቸው መሰረተ ልማቶች ላይ ትኩረት ማድረግ አለመቻል ነው። እነዚህን አዝማሚያዎች ያሟላል
በዚህ ጽሑፍ ውስጥ፣ አሁን ያለውን የኩበርኔትስ ሁኔታ ላይ ብቻ ቧጨረነዋል—በእርግጥ ይህ የበረዶ ግግር ጫፍ ብቻ ነው። የኩበርኔትስ ተጠቃሚዎች ሌሎች ብዙ ሀብቶች፣ ችሎታዎች እና ውቅሮች በእጃቸው አላቸው።
ምንጭ: hab.com