如何使用 cri-o

image.png

本教程將引導(dǎo)你如何安裝CRI-O(基于Open Container Initiative的Kubernetes Container Runtime Interface的實現(xiàn))以及創(chuàng)建運行在Pod中的Redis服務(wù)器储矩。

系統(tǒng)要求

ubntu16.04

安裝

需要安裝的組件:

  • crio - 管理pods,實現(xiàn)了kubernetes的CRI
  • crictl - CRI的client
  • cni - 容器網(wǎng)絡(luò)接口
  • runc - 啟動容器的OCI運行時

runc

下載runc的二進制可執(zhí)行文件

wget https://github.com/opencontainers/runc/releases/download/v1.0.0-rc4/runc.amd64

設(shè)置可執(zhí)行權(quán)限并移動到指定的目錄

chmod +x runc.amd64
sudo mv runc.amd64 /usr/bin/runc

檢查runc的版本

runc --version
runc --version
runc version 1.0.0-rc4
spec: 1.0.0

cri-o

cri-o沒有release的二進制可執(zhí)行文件宠能,所以需要從源碼build。

下載Go安裝包

wget https://dl.google.com/go/go1.10.2.linux-amd64.tar.gz

安裝Go 1.10.2

tar -C /usr/local -zxf go1.10.2.linux-amd64.tar.gz
mkdir -p $HOME/go/src
export GOPATH=$HOME/go
export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin

Go應(yīng)該安裝好啦

go version
go version go1.10.2 linux/amd64

下載crictl

go get github.com/kubernetes-incubator/cri-tools/cmd/crictl
cd $GOPATH/src/github.com/kubernetes-incubator/cri-tools
make
make install

編譯可執(zhí)行文件

sudo apt-get update && apt-get install -y libglib2.0-dev \
                                          libseccomp-dev \
                                          libgpgme11-dev \
                                          libdevmapper-dev \
                                          make \
                                          git
go get -d github.com/kubernetes-incubator/cri-o
cd $GOPATH/src/github.com/kubernetes-incubator/cri-o
make install.tools
make 
make install

如果你是第一次安裝磁餐,要生成配置文件

make install.config

驗證注冊信息

如果沒有這些配置項,需要自己配置阿弃。

registries = ['registry.access.redhat.com', 'registry.fedoraproject.org', 'docker.io']

啟動進程crio

sudo sh -c 'echo "[Unit]
Description=OCI-based implementation of Kubernetes Container Runtime Interface
Documentation=https://github.com/kubernetes-incubator/cri-o

[Service]
ExecStart=/usr/local/bin/crio --log-level debug
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target" > /etc/systemd/system/crio.service'
systemctl daemon-reload
systemctl enable crio
systemctl start crio

檢查進程是否啟動成功

crictl --runtime-endpoint unix:///var/run/crio/crio.sock version
Version:  0.1.0
RuntimeName:  cri-o
RuntimeVersion:  1.10.0-dev
RuntimeApiVersion:  v1alpha1

cni 插件安裝

下載cni的源代碼

go get -d github.com/containernetworking/plugins
cd $GOPATH/src/github.com/containernetworking/plugins

編譯CNI二進制文件

./build.sh

輸出信息

Building plugins
  bandwidth
  flannel
  portmap
  tuning
  bridge
  host-device
  ipvlan
  loopback
  macvlan
  ptp
  vlan
  dhcp
  host-local
  static
  sample

安裝CNI插件

mkdir -p /opt/cni/bin
cp bin/* /opt/cni/bin/

配置CNI

mkdir -p /etc/cni/net.d
sudo sh -c 'cat >/etc/cni/net.d/10-mynet.conf <<-EOF
{
    "cniVersion": "0.2.0",
    "name": "mynet",
    "type": "bridge",
    "bridge": "cni0",
    "isGateway": true,
    "ipMasq": true,
    "ipam": {
        "type": "host-local",
        "subnet": "10.88.0.0/16",
        "routes": [
            { "dst": "0.0.0.0/0"  }
        ]
    }
}
EOF'
sudo sh -c 'cat >/etc/cni/net.d/99-loopback.conf <<-EOF
{
    "cniVersion": "0.2.0",
    "type": "loopback"
}
EOF'

安裝skopeo-containers

sudo add-apt-repository ppa:projectatomic/ppa
sudo apt-get update
sudo apt-get install skopeo-containers -y

重啟cri-o來啟動CNI

systemctl restart crio

現(xiàn)在CNI安裝并且配置好啦诊霹,使用10.88.0.0/16的網(wǎng)段來分配給容器。
一切準(zhǔn)備就緒渣淳,現(xiàn)在我們可以創(chuàng)建pods脾还,接下來演示如何在pod中創(chuàng)建一個redis server。

創(chuàng)建一個pod

首先需要設(shè)置pod sandbox的配置

cd $GOPATH/src/github.com/kubernetes-incubator/cri-o
mkdir /etc/containers/
cp test/policy.json /etc/containers

創(chuàng)建pod并且獲得pod的ID

POD_ID=$(sudo crictl runp test/testdata/sandbox_config.json)

用crictl查看pod的信息

sudo crictl inspectp --output table $POD_ID

輸出信息

ID: f66df6126fe9a2e4cf056598afeb1c13a54568c850ead8582924b47b0decc128
Name: podsandbox1
UID: redhat-test-crio
Namespace: redhat.test.crio
Attempt: 1
Status: SANDBOX_READY
Created: 2018-05-17 03:25:19.327406442 +0000 UTC
IP Address: 10.88.0.2
Labels:
    group -> test
    io.kubernetes.container.name -> POD
Annotations:
    owner -> hmeng
    security.alpha.kubernetes.io/seccomp/pod -> unconfined
Info: map[version:{"version":"1.11.0-dev"}]

在pod中創(chuàng)建redis容器

crictl 拉取redis鏡像入愧,根據(jù)配置文件創(chuàng)建redis容器鄙漏,并且附著到之前創(chuàng)建的pod中。

crictl pull quay.io/crio/redis:alpine
CONTAINER_ID=$(sudo crictl create $POD_ID test/testdata/container_redis.json test/testdata/sandbox_config.json)

啟動redis容器

crictl start $CONTAINER_ID

查看容器的日志

crictl inspect $CONTAINER_ID
{
  "status": {
    "id": "90688b328b0345e682d407ca99472e30bda036d9a0803878328ee43c2b5cf11b",
    "metadata": {
      "attempt": 0,
      "name": "podsandbox1-redis"
    },
    "state": "CONTAINER_RUNNING",
    "createdAt": "2018-05-17T03:26:28.363615962Z",
    "startedAt": "2018-05-17T03:26:36.152514904Z",
    "finishedAt": "1970-01-01T00:00:00Z",
    "exitCode": 0,
    "image": {
      "image": "quay.io/crio/redis:alpine"
    },
    "imageRef": "quay.io/crio/redis@sha256:1780b5a5496189974b94eb2595d86731d7a0820e4beb8ea770974298a943ed55",
    "reason": "",
    "message": "",
    "labels": {
      "tier": "backend"
    },
    "annotations": {
      "pod": "podsandbox1"
    },
    "mounts": null,
    "logPath": "/var/log/crio/pods/f66df6126fe9a2e4cf056598afeb1c13a54568c850ead8582924b47b0decc128/90688b328b0345e682d407ca99472e30bda036d9a0803878328ee43c2b5cf11b.log"
  }
}

測試redis容器

連接容器

telnet 10.88.0.2 6379
Trying 10.88.0.2...
Connected to 10.88.0.2.
Escape character is '^]'.

根據(jù)提示出入MONITOR

Trying 10.88.0.2...
Connected to 10.88.0.2.
Escape character is '^]'.
MONITOR
+OK

輸入ctrl+ 」quit退出連接

^]

telnet> quit
Connection closed.

查看redis的日志

journalctl -u crio --no-pager

停止并且刪除容器

crictl stop $CONTAINER_ID
crictl rm $CONTAINER_ID
crictl stopp $POD_ID
crictl rmp $POD_ID

查看是否刪除

crictl pods
crictl ps
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末棺蛛,一起剝皮案震驚了整個濱河市怔蚌,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌旁赊,老刑警劉巖桦踊,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異终畅,居然都是意外死亡籍胯,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門离福,熙熙樓的掌柜王于貴愁眉苦臉地迎上來杖狼,“玉大人,你說我怎么就攤上這事妖爷〉” “怎么了?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵絮识,是天一觀的道長子寓。 經(jīng)常有香客問我,道長笋除,這世上最難降的妖魔是什么斜友? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮垃它,結(jié)果婚禮上鲜屏,老公的妹妹穿的比我還像新娘烹看。我一直安慰自己,他們只是感情好洛史,可當(dāng)我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布惯殊。 她就那樣靜靜地躺著,像睡著了一般也殖。 火紅的嫁衣襯著肌膚如雪土思。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天忆嗜,我揣著相機與錄音己儒,去河邊找鬼。 笑死捆毫,一個胖子當(dāng)著我的面吹牛闪湾,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播绩卤,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼途样,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了濒憋?” 一聲冷哼從身側(cè)響起何暇,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎凛驮,沒想到半個月后赖晶,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡辐烂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年遏插,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片纠修。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡胳嘲,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出扣草,到底是詐尸還是另有隱情了牛,我是刑警寧澤,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布辰妙,位于F島的核電站鹰祸,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏密浑。R本人自食惡果不足惜蛙婴,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望尔破。 院中可真熱鬧街图,春花似錦浇衬、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至絮姆,卻和暖如春醉冤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背篙悯。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工蚁阳, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人辕近。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像匿垄,于是被迫代替她去往敵國和親移宅。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內(nèi)容