k8s(四)

一.k8s對(duì)接glusterfs存儲(chǔ)

1.創(chuàng)建endpoint

#查看
kubectl describe svc myweb
kubectl get endpoints myweb
kubectl describe endpoints myweb

#創(chuàng)建
[root@k8s-master ~]# cd k8s_yaml/
[root@k8s-master k8s_yaml]# mkdir gfs
[root@k8s-master k8s_yaml]# cd gfs/

#添加文件
[root@k8s-master gfs]# vim glusterfs-ep.yaml 
apiVersion: v1
kind: Endpoints
metadata:
  name: glusterfs
  namespace: default
subsets:
- addresses:
  - ip: 10.0.0.11
  - ip: 10.0.0.12
  - ip: 10.0.0.13
  ports:
  - port: 49152
    protocol: TCP
端口和協(xié)議可以通過(guò)netstat -lntp查看得到
#創(chuàng)建并查看
[root@k8s-master gfs]# kubectl create -f glusterfs-ep.yaml 
endpoints "glusterfs" created
[root@k8s-master gfs]# kubectl get endpoints 
NAME               ENDPOINTS                                         AGE
glusterfs          10.0.0.11:49152,10.0.0.12:49152,10.0.0.13:49152   9s
kubernetes         10.0.0.11:6443                                    6d
mysql              <none>                                            1d
myweb              172.18.13.7:8080                                  1d
nginx              172.18.13.7:80                                    5d
nginx-deployment   172.18.13.5:80                                    1d

2.創(chuàng)建glusterfs-svc.yaml

[root@k8s-master gfs]#  vim  glusterfs-svc.yaml
apiVersion: v1
kind: Service
metadata:
  name: glusterfs
  namespace: default
spec:
  ports:
  - port: 49152
    protocol: TCP
    targetPort: 49152
  sessionAffinity: None
  type: ClusterIP
[root@k8s-master gfs]# kubectl create -f glusterfs-svc.yaml 
service "glusterfs" created

3.創(chuàng)建gluster類型pv

#配置文件中的glusterfs名是用昨天創(chuàng)建好的qiangge

[root@k8s-master gfs]# vim glusterfs-pv.yaml 
apiVersion: v1
kind: PersistentVolume
metadata:
  name: gluster
  labels:
    type: glusterfs
spec:
  capacity:
    storage: 20Gi
  accessModes:
    - ReadWriteMany
  glusterfs:
    endpoints: "glusterfs"
    path: "qiangge"
    readOnly: false

[root@k8s-master gfs]# kubectl create -f glusterfs-pv.yaml 
persistentvolume "gluster" created
[root@k8s-master gfs]# kubectl get pv
NAME      CAPACITY   ACCESSMODES   RECLAIMPOLICY   STATUS      CLAIM     REASON    AGE
gluster   20Gi       RWX           Retain          Available                       5s

4.創(chuàng)建k8s_pvc.yaml

[root@k8s-master gfs]# vim k8s_pvc.yaml 
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: tomcat-mysql
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 20Gi


[root@k8s-master gfs]# kubectl create -f k8s_pvc.yaml 
persistentvolumeclaim "tomcat-mysql" created
[root@k8s-master gfs]# kubectl get pvc
NAME           STATUS    VOLUME    CAPACITY   ACCESSMODES   AGE
tomcat-mysql   Bound     gluster   20Gi       RWX           9s
[root@k8s-master gfs]# kubectl get pvc -n default
NAME           STATUS    VOLUME    CAPACITY   ACCESSMODES   AGE
tomcat-mysql   Bound     gluster   20Gi       RWX           19s

5.改變?cè)瓉?lái)tomcat項(xiàng)目里面額mysql-rc.yaml

[root@k8s-master tomcat_demo]# cat mysql-rc.yaml 
apiVersion: v1
kind: ReplicationController
metadata:
  name: mysql
spec:
  replicas: 1
  selector:
    app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      volumes: 
      - name: mysql 
        persistentVolumeClaim:
          claimName: tomcat-mysql 
      containers:
        - name: mysql
          volumeMounts:
          - mountPath: /var/lib/mysql
            name: mysql
          image: 10.0.0.11:5000/mysql:5.7
          ports:
          - containerPort: 3306
          env:
          - name: MYSQL_ROOT_PASSWORD
            value: '123456'

[root@k8s-master tomcat_demo]# kubectl delete -f mysql-rc.yaml 
replicationcontroller "mysql" deleted
[root@k8s-master tomcat_demo]# kubectl create -f mysql-rc.yaml 
replicationcontroller "mysql" created
[root@k8s-master tomcat_demo]# kubectl get pod -o wide
NAME                                READY     STATUS    RESTARTS   AGE       IP            NODE
mysql-p2xkq                         1/1       Running   0          10m       172.18.81.4   k8s-node1
myweb-41l9f                         1/1       Running   1          16h  

6.瀏覽器訪問(wèn)添加數(shù)據(jù)后刪除pod


image.png
#創(chuàng)建新數(shù)據(jù)后刪除mysql的pod會(huì)自動(dòng)生成新的pod
kubectl delete pod mysql-m3zm9

瀏覽器訪問(wèn)數(shù)據(jù)還在


image.png

二、與jenkins集成實(shí)現(xiàn)ci/cd

image.png

image.png

1.安裝gitlab并上傳代碼

#a:安裝
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-11.9.11-ce.0.el7.x86_64.rpm
yum localinstall gitlab-ce-11.9.11-ce.0.el7.x86_64.rpm -y
#b:配置
vim /etc/gitlab/gitlab.rb
external_url 'http://10.0.0.13'
prometheus_monitoring['enable'] = false
#c:應(yīng)用并啟動(dòng)服務(wù)
gitlab-ctl reconfigure
?
#使用瀏覽器訪問(wèn)http://10.0.0.13,修改root用戶密碼,創(chuàng)建project
?
#上傳代碼到git倉(cāng)庫(kù)
cd /srv/
rz -E
unzip xiaoniaofeifei.zip 
rm -fr xiaoniaofeifei.zip 
?
git config --global user.name "Administrator"
git config --global user.email "admin@example.com"
git init
git remote add origin http://10.0.0.13/root/xiaoniao.git
git add .
git commit -m "Initial commit"
git push -u origin master

2.安裝jenkins坐榆,并自動(dòng)構(gòu)建docker鏡像
1.安裝jenkins

先上車這些安裝包
cd /opt/
rz -E
rpm -ivh jdk-8u102-linux-x64.rpm 
mkdir /app
tar xf apache-tomcat-8.0.27.tar.gz -C /app
rm -fr /app/apache-tomcat-8.0.27/webapps/*
mv jenkins.war /app/apache-tomcat-8.0.27/webapps/ROOT.war
tar xf jenkin-data.tar.gz -C /root
/app/apache-tomcat-8.0.27/bin/startup.sh 
netstat -lntup

2.訪問(wèn)jenkins
訪問(wèn)http://10.0.0.12:8080/,默認(rèn)賬號(hào)密碼admin:123456
3.配置jenkins拉去gitlab代碼憑據(jù)
a:在jenkins上生成秘鑰對(duì)

ssh-keygen -t rsa

b:復(fù)制公鑰粘貼gitlab上


image.png

c.jenkins上創(chuàng)建全局憑據(jù)



添加私鑰
d.拉去代碼
image.png

image.png

image.png

image.png

image.png

image.png

e.編寫dockerfile并測(cè)試

#vim dockerfile
FROM 10.0.0.11:5000/nginx:1.13
add .  /usr/share/nginx/html
測(cè)試dockerfile是否好用
docker build -t xiaoniao:v1 . 
docker run -d -p 88:80 xiaoniao:v1
打開(kāi)瀏覽器測(cè)試訪問(wèn)xiaoniaofeifei的項(xiàng)目
上傳dockerfile到gitlab倉(cāng)庫(kù)

f.點(diǎn)擊jenkins立即構(gòu)建,自動(dòng)構(gòu)建docker鏡像并上傳到私有倉(cāng)庫(kù)
這里主節(jié)點(diǎn)的registry私有倉(cāng)庫(kù)必須是啟動(dòng)的
修改jenkins工程配置



變量是jenkins的內(nèi)置變量旧巾,根據(jù)拉去代碼生成版本


image.png

去私有倉(cāng)庫(kù)查看一下有沒(méi)有xiaoniao的鏡像,并查看版本
[root@k8s-master ~]# cd /opt/myregistry/docker/registry/v2/repositories/
[root@k8s-master repositories]# ls
busybox  mysql  nginx  rhel7  tomcat-app  wordpress  xiaoniao
[root@k8s-master repositories]# ls xiaoniao/_manifests/tags/
v1

jenkins自動(dòng)部署應(yīng)用到k8s
kubectl -s 10.0.0.11:8080 get nodes可以遠(yuǎn)程執(zhí)行命令

if [ -f /tmp/xiaoniao.lock ];then
    docker  build  -t  10.0.0.11:5000/xiaoniao:v$BUILD_ID  .
    docker  push 10.0.0.11:5000/xiaoniao:v$BUILD_ID
    kubectl -s 10.0.0.11:8080 set image  -n xiaoniao deploy xiaoniao xiaoniao=10.0.0.11:5000/xiaoniao:v$BUILD_ID
    echo "更新成功"
else
    docker  build  -t  10.0.0.11:5000/xiaoniao:v$BUILD_ID  .
    docker  push 10.0.0.11:5000/xiaoniao:v$BUILD_ID
    kubectl  -s 10.0.0.11:8080  create  namespace  xiaoniao
    kubectl  -s 10.0.0.11:8080  run   xiaoniao  -n xiaoniao  --image=10.0.0.11:5000/xiaoniao:v$BUILD_ID --replicas=3 --record
    kubectl  -s 10.0.0.11:8080   expose -n xiaoniao deployment xiaoniao --port=80 --type=NodePort
    port=`kubectl -s 10.0.0.11:8080  get svc -n xiaoniao|grep -oP '(?<=80:)\d+'`
    echo "你的項(xiàng)目地址訪問(wèn)是http://10.0.0.13:$port"
    touch /tmp/xiaoniao.lock
fi

把這個(gè)腳本添加到j(luò)enkins的工程配置敞映,更改代碼可以直接拉去并上線

jenkins一鍵回滾

kubectl -s 10.0.0.11:8080 rollout undo -n xiaoniao deployment xiaoniao
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市钮呀,隨后出現(xiàn)的幾起案子删掀,更是在濱河造成了極大的恐慌患膛,老刑警劉巖凡蚜,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件人断,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡朝蜘,警方通過(guò)查閱死者的電腦和手機(jī)恶迈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)谱醇,“玉大人暇仲,你說(shuō)我怎么就攤上這事「笨剩” “怎么了奈附?”我有些...
    開(kāi)封第一講書人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)煮剧。 經(jīng)常有香客問(wèn)我斥滤,道長(zhǎng),這世上最難降的妖魔是什么勉盅? 我笑而不...
    開(kāi)封第一講書人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任中跌,我火速辦了婚禮,結(jié)果婚禮上菇篡,老公的妹妹穿的比我還像新娘漩符。我一直安慰自己,他們只是感情好驱还,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布嗜暴。 她就那樣靜靜地躺著,像睡著了一般议蟆。 火紅的嫁衣襯著肌膚如雪闷沥。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 51,554評(píng)論 1 305
  • 那天咐容,我揣著相機(jī)與錄音舆逃,去河邊找鬼。 笑死戳粒,一個(gè)胖子當(dāng)著我的面吹牛路狮,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蔚约,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼奄妨,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了苹祟?” 一聲冷哼從身側(cè)響起砸抛,我...
    開(kāi)封第一講書人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤评雌,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后直焙,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體景东,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年奔誓,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了斤吐。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡丝里,死狀恐怖曲初,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情杯聚,我是刑警寧澤臼婆,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布,位于F島的核電站幌绍,受9級(jí)特大地震影響颁褂,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜傀广,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一颁独、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧伪冰,春花似錦誓酒、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至吓懈,卻和暖如春歼冰,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背耻警。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工隔嫡, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人甘穿。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓腮恩,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親扒磁。 傳聞我的和親對(duì)象是個(gè)殘疾皇子庆揪,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355

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

  • k8s容器編排 [TOC] 1:k8s集群的安裝 1.1 k8s的架構(gòu) 除了核心組件,還有一些推薦的Add-ons...
    Zh_bd92閱讀 908評(píng)論 0 0
  • k8s的架構(gòu) kubernetes集群核心組件 k8s集群的安裝 官方文檔 環(huán)境準(zhǔn)備 做一些基礎(chǔ)的優(yōu)化后拍攝快照并...
    酷酷的偉閱讀 1,993評(píng)論 0 15
  • 前言 在日常開(kāi)發(fā)中妨托,經(jīng)常會(huì)有發(fā)布的需求缸榛,而且經(jīng)常會(huì)碰到各種環(huán)境,比如:開(kāi)發(fā)環(huán)境兰伤、測(cè)試環(huán)境内颗、生產(chǎn)環(huán)境。雖然可以使用手...
    tinylk閱讀 38,753評(píng)論 34 77
  • k8s容器編排 1. k8s集群的安裝 1.1 k8s的架構(gòu) 除了核心組件敦腔,還有一些推薦的Add-ons: 1.2...
    藏鋒1013閱讀 13,917評(píng)論 1 9
  • 人們都說(shuō)早起的鳥(niǎo)兒有蟲吃符衔,但這并不適用于游戲產(chǎn)業(yè)找前。 早在騰訊網(wǎng)易吃積累手游上線之前,一個(gè)名不見(jiàn)經(jīng)傳的小公司就已經(jīng)嗅...
    小沫游戲說(shuō)閱讀 427評(píng)論 0 0