国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

利用K8S技術(shù)棧打造個(gè)人私有云(連載之:K8S環(huán)境理解和練手)

30e8336b8229 / 1953人閱讀

摘要:常見(jiàn)的和等都是屬于某一個(gè)的默認(rèn)是,而等則不屬于任何。其實(shí)其的命令和上面都差不多,這里不一一列出了創(chuàng)建查看啟動(dòng)情況是一個(gè)定義了一組的策略的抽象,可以理解為抽象到用戶層的一個(gè)宏觀服務(wù)。其實(shí)這個(gè)概念在集群里也有,可以參照理解。


【利用K8S技術(shù)棧打造個(gè)人私有云系列文章目錄】

利用K8S技術(shù)棧打造個(gè)人私有云(連載之:初章)

利用K8S技術(shù)棧打造個(gè)人私有云(連載之:K8S集群搭建)

利用K8S技術(shù)棧打造個(gè)人私有云(連載之:K8S環(huán)境理解和練手)

利用K8S技術(shù)棧打造個(gè)人私有云(連載之:基礎(chǔ)鏡像制作與實(shí)驗(yàn))

利用K8S技術(shù)棧打造個(gè)人私有云(連載之:資源控制研究)

利用K8S技術(shù)棧打造個(gè)人私有云(連載之:私有云客戶端打造)

在前文中我們已經(jīng)搭建好了K8S集群,接下來(lái)就來(lái)講述一下K8S的一些重要的概念和知識(shí),并搞兩個(gè)例子在集群中來(lái)實(shí)際練手感受一把!

注: 本文首發(fā)于 My 公眾號(hào) CodeSheep ,可 長(zhǎng)按掃描 下面的 小心心 來(lái)訂閱 ↓ ↓ ↓


K8S環(huán)境理解

kubernetes的概念非常多,組件也不少,本文主要闡述一下幾個(gè)最主要、平時(shí)用得最頻繁的概念,最詳細(xì)的學(xué)習(xí)文檔是官網(wǎng)教程!

K8S設(shè)計(jì)架構(gòu)

該圖描述的設(shè)計(jì)架構(gòu)是一個(gè)典型的M-S架構(gòu),一主兩從,這和我搭建的集群基本是一致的,主節(jié)點(diǎn)和從節(jié)點(diǎn)上運(yùn)行哪些kube組件,其實(shí)在我搭建集群那篇文章也已經(jīng)講過(guò)了,下面來(lái)闡述一下kubernetes集群里的重要概念和操作命令。

Pod

Pod是Kubernetes中最小的管理元素,Pod是一組容器的集合,且一個(gè)Pod只能運(yùn)行在一個(gè)Node上,Pod是kubernetes調(diào)度、部署、擴(kuò)展的基本單位

kubectl run命令創(chuàng)建一個(gè)pod:kubectl run pod-example --image=nginx

kubectl create命令創(chuàng)建pod:kubectl create -f create_pod.yaml

刪除pod:kubectl delete po pod名

查看pod啟動(dòng)情況:kubectl get pods kubectl get pods -o wide

查看pod的詳細(xì)信息:kubectl discrible po pod名

Namespace

Namespace是對(duì)一組資源和對(duì)象的抽象集合,比如可以用來(lái)將系統(tǒng)內(nèi)部的對(duì)象劃分為不同的項(xiàng)目組或用戶組。常見(jiàn)的pods, services, replication controllers和deployments等都是屬于某一個(gè)namespace的(默認(rèn)是default),而node, persistentVolumes等則不屬于任何namespace。

創(chuàng)建 kubectl create namespace namespace名

刪除 kubectl delete namespaces namespace名

查詢(xún) kubectl get namespaces

Replication Controller(RC)

Replication Controller 保證了在所有時(shí)間內(nèi),都有特定數(shù)量的Pod副本正在運(yùn)行,如果太多了,Replication Controller就殺死幾個(gè),如果太少了,Replication Controller會(huì)新建幾個(gè),和直接創(chuàng)建的pod不同的是,Replication Controller會(huì)替換掉那些刪除的或者被終止的pod,而不管刪除的原因是什么。

其實(shí)其CURD的命令和上面都差不多,這里不一一列出了

創(chuàng)建:kubectl create -f create_rc.json

查看rc啟動(dòng)情況:kubectl get rc

Service

Service 是一個(gè)定義了一組Pod的策略的抽象,可以理解為抽象到用戶層的一個(gè)宏觀服務(wù)。其實(shí)這個(gè)概念在Swarm集群里也有,可以參照理解。

Service的這樣一層抽象最起碼可以抵御兩個(gè)方面的問(wèn)題:

Pod重啟后IP地址的變化(保持用我們系統(tǒng)的客戶其IP不變)

提供負(fù)載均衡能力

其CURD的命令和上面都差不多,這里依然不一一列出

創(chuàng)建service:kubectr create -f redis-master-service.json

查看service的啟動(dòng)情況:kubectl get svc

這里給一個(gè)Service的示例:

apiVersion: v1
kind: Service
metadata:
  name: my-nginx-svc
  labels:
    app: nginx
spec:
  type: LoadBalancer
  ports:
  - port: 80
  selector:  
    app: nginx
好了,理論的東西看多了可能有點(diǎn)蒙,只能多找點(diǎn)不同的材料閱讀并理解了。下面開(kāi)始做幾個(gè)練手示例,這幾個(gè)例子都源自于K8S官網(wǎng),對(duì)于理解理論概念非常有好處,下面開(kāi)始動(dòng)手吧!

關(guān)于Pod的實(shí)例練手

本例子創(chuàng)建一個(gè)包含兩個(gè)容器的POD,并在容器之間完成文件交換

yaml配置文件如下:

apiVersion: v1
kind: Pod
metadata:
  name: two-containers
spec:

  restartPolicy: Never

  volumes:
  - name: shared-data
    emptyDir: {}

  containers:

  - name: nginx-container
    image: nginx
    volumeMounts:
    - name: shared-data
      mountPath: /usr/share/nginx/html

  - name: debian-container
    image: debian
    volumeMounts:
    - name: shared-data
      mountPath: /pod-data
    command: ["/bin/sh"]
    args: ["-c", "echo Hello from the debian container > /pod-data/index.html"]

創(chuàng)建pod

kubectl create -f two-container-pod.yaml

查看pod和容器的信息

kubectl get pod two-containers --output=yaml

執(zhí)行完成輸出內(nèi)容大致如下(經(jīng)過(guò)縮減):

apiVersion: v1
kind: Pod
metadata:
  ...
  name: two-containers
  namespace: default
  ...
spec:
  ...
  containerStatuses:

  - containerID: docker://c1d8abd1 ...
    image: debian
    ...
    lastState:
      terminated:  // debian容器已停止
        ...
    name: debian-container
    ...

  - containerID: docker://96c1ff2c5bb ...
    image: nginx
    ...
    name: nginx-container
    ...
    state:
      running:  // nginx容器已運(yùn)行
    ...

可以看到debian容器已經(jīng)停止了,nginx容器依然運(yùn)行

我們進(jìn)入nginx容器的/bin/bash并驗(yàn)證nginx服務(wù)器

kubectl exec -it two-containers -c nginx-container -- /bin/bash

執(zhí)行如下命令來(lái)安裝curl:

root@two-containers:/# apt-get update
root@two-containers:/# apt-get install curl procps
root@two-containers:/# ps aux

然后執(zhí)行curl localhost,可以獲得輸出:

Hello from the debian container

可見(jiàn)debian容器中寫(xiě)入的東西在nginx容器中獲得了,因此文件交換也完成了

用Pod來(lái)做一件事很簡(jiǎn)單吧!


關(guān)于RC和Service的實(shí)例練手

本示例演示的是:部署一個(gè)包含Redis集群、基于PHP的留言板系統(tǒng)

創(chuàng)建redis-master的RC

redis-master-controller.yaml內(nèi)容:

apiVersion: v1
kind: ReplicationController
metadata:
  name: redis-master
spec:
  replicas: 1
  selector:
    name: redis-master
  template:
    metadata:
      name: redis-master
      labels:
        name: redis-master
    spec:
      containers:
      - name: redis-master
        image: kubeguide/redis-master
        ports:
        - containerPort: 6379

創(chuàng)建該RC并查看創(chuàng)建結(jié)果:

kubectl create -f redis-master-controller.yaml
kubectl get rc
kubectl get pods

創(chuàng)建redis-master的service

redis-master-service.yaml內(nèi)容:

apiVersion: v1
kind: Service
metadata:
  name: redis-master
  labels:
    name: redis-master
spec:
  ports:
  - port: 6379
    targetPort: 6379
  selector:
    name: redis-master

創(chuàng)建該Service并查看:

kubectl create -f redis-master-service.yaml
kubectl get services

創(chuàng)建redis-slave的RC

redis-slave-controller.yaml文件內(nèi)容:

apiVersion: v1
kind: ReplicationController
metadata:
  name: redis-slave
spec:
  replicas: 2
  selector: # RC通過(guò)spec.selector來(lái)篩選要控制的Pod
    name: redis-slave
  template:
    metadata:
      name: redis-slave
      labels: # Pod的label,可以看到這個(gè)label與spec.selector相同
        name: redis-slave
    spec:
      containers:
      - name: redis-slave
        image: kubeguide/guestbook-redis-slave
        env:
        - name: GET_HOSTS_FROM
          value: env
        ports:
        - containerPort: 6379

創(chuàng)建該RC并查看:

kubectl create -f redis-slave-controller.yaml
kubectl get rc
kubectl get pods

創(chuàng)建redis-slave的service

redis-slave-service.yaml文件內(nèi)容:

apiVersion: v1
kind: Service
metadata:
  name: redis-slave
  labels:
    name: redis-slave
spec:
  ports:
  - port: 6379  
  selector:
    name: redis-slave

創(chuàng)建該Service并查看:

kubectl create -f redis-slave-service.yaml
kubectl get services

創(chuàng)建frontend的RC

frontend-controller.yaml內(nèi)容如下:

apiVersion: v1
kind: ReplicationController
metadata:
  name: frontend
  labels:
    name: frontend
spec:
  replicas: 3
  selector:
    name: frontend
  template:
    metadata:
      labels:
        name: frontend
    spec:
      containers:
      - name: frontend
        image: kubeguide/guestbook-php-frontend
        env:
        - name: GET_HOSTS_FROM
          value: env
        ports:
        - containerPort: 80

創(chuàng)建該RC并查看

kubectl create -f frontend-controller.yaml
kubectl get rc
kubectl get pods

創(chuàng)建frontend的Service

frontend-service.yaml文件內(nèi)容如下:

apiVersion: v1
kind: Service
metadata:
  name: frontend
  labels:
    name: frontend
spec:
  type: NodePort
  ports:
  - port: 80
    nodePort: 30001
  selector:
    name: frontend

創(chuàng)建該Service并查看

kubectl create -f frontend-service.yaml
kubectl get services

訪問(wèn)http://your-host:30001/

簡(jiǎn)單的留言板系統(tǒng)就生成了!


后記

作者更多的原創(chuàng)文章在此,歡迎觀賞

My Personal Blog

作者更多的SpringBt實(shí)踐文章在此:

Spring Boot應(yīng)用監(jiān)控實(shí)戰(zhàn)

SpringBoot應(yīng)用部署于外置Tomcat容器

ElasticSearch搜索引擎在SpringBt中的實(shí)踐

初探Kotlin+SpringBoot聯(lián)合編程

Spring Boot日志框架實(shí)踐

SpringBoot優(yōu)雅編碼之:Lombok加持


如果有興趣,也可以抽點(diǎn)時(shí)間看看作者一些關(guān)于容器化、微服務(wù)化方面的文章:

利用K8S技術(shù)棧打造個(gè)人私有云 連載文章

從一份配置清單詳解Nginx服務(wù)器配置

Docker容器可視化監(jiān)控中心搭建

利用ELK搭建Docker容器化應(yīng)用日志中心

RPC框架實(shí)踐之:Apache Thrift

RPC框架實(shí)踐之:Google gRPC

微服務(wù)調(diào)用鏈追蹤中心搭建

Docker容器跨主機(jī)通信

Docker Swarm集群初探

高效編寫(xiě)Dockerfile的幾條準(zhǔn)則



文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/32636.html

相關(guān)文章

  • 利用K8S技術(shù)打造個(gè)人私有連載K8S環(huán)境理解練手

    摘要:常見(jiàn)的和等都是屬于某一個(gè)的默認(rèn)是,而等則不屬于任何。其實(shí)其的命令和上面都差不多,這里不一一列出了創(chuàng)建查看啟動(dòng)情況是一個(gè)定義了一組的策略的抽象,可以理解為抽象到用戶層的一個(gè)宏觀服務(wù)。其實(shí)這個(gè)概念在集群里也有,可以參照理解。 showImg(https://segmentfault.com/img/remote/1460000013229549); 【利用K8S技術(shù)棧打造個(gè)人私有云系列文...

    kid143 評(píng)論0 收藏0
  • 利用K8S技術(shù)打造個(gè)人私有連載私有客戶端打造

    摘要:前端技術(shù)棧還是非常龐大的,為了能夠借助已經(jīng)存在的輪子來(lái)造出一輛車(chē),所以我選擇了進(jìn)行實(shí)踐。狀態(tài)的管理的狀態(tài)管理依靠完成,用其來(lái)管理的所有組件狀態(tài)。私有云客戶端打造主頁(yè)面首先是主頁(yè)面,可以打開(kāi)任何一個(gè)云主機(jī)系統(tǒng)的頁(yè)面看,基本類(lèi)似。 showImg(https://segmentfault.com/img/remote/1460000013930354); 【利用K8S技術(shù)棧打造個(gè)人私有...

    Jingbin_ 評(píng)論0 收藏0
  • 利用K8S技術(shù)打造個(gè)人私有連載私有客戶端打造

    摘要:前端技術(shù)棧還是非常龐大的,為了能夠借助已經(jīng)存在的輪子來(lái)造出一輛車(chē),所以我選擇了進(jìn)行實(shí)踐。狀態(tài)的管理的狀態(tài)管理依靠完成,用其來(lái)管理的所有組件狀態(tài)。私有云客戶端打造主頁(yè)面首先是主頁(yè)面,可以打開(kāi)任何一個(gè)云主機(jī)系統(tǒng)的頁(yè)面看,基本類(lèi)似。 showImg(https://segmentfault.com/img/remote/1460000013930354); 【利用K8S技術(shù)棧打造個(gè)人私有...

    shiina 評(píng)論0 收藏0
  • 利用K8S技術(shù)打造個(gè)人私有連載:基礎(chǔ)鏡像制作與實(shí)驗(yàn))

    摘要:因此本篇博文將講解如何在本地構(gòu)建一個(gè)帶組件的底包鏡像并上傳到上供下載使用。 showImg(https://segmentfault.com/img/remote/1460000013318761); 【利用K8S技術(shù)棧打造個(gè)人私有云系列文章目錄】 利用K8S技術(shù)棧打造個(gè)人私有云(連載之:初章) 利用K8S技術(shù)棧打造個(gè)人私有云(連載之:K8S集群搭建) 利用K8S技術(shù)棧打造個(gè)人私...

    tabalt 評(píng)論0 收藏0
  • 利用K8S技術(shù)打造個(gè)人私有連載:基礎(chǔ)鏡像制作與實(shí)驗(yàn))

    摘要:因此本篇博文將講解如何在本地構(gòu)建一個(gè)帶組件的底包鏡像并上傳到上供下載使用。 showImg(https://segmentfault.com/img/remote/1460000013318761); 【利用K8S技術(shù)棧打造個(gè)人私有云系列文章目錄】 利用K8S技術(shù)棧打造個(gè)人私有云(連載之:初章) 利用K8S技術(shù)棧打造個(gè)人私有云(連載之:K8S集群搭建) 利用K8S技術(shù)棧打造個(gè)人私...

    hot_pot_Leo 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<