記一次k8s單機部署

記一次k8s單機部署

目錄

  • [環境]
  • [基本安裝]
  • [k8s集群初始化]
  • [安裝過程中遇到的問題]
  • [安裝完成后的配置]
  • [配置tomcat RC]
  • [配置tomcat service]
  • [查看戰果]
  • [總結]

版本記錄

編號 時間 備注
v1.0.0 2019.02.21 文章創建
v1.0.1 2019.03.18 目錄整改
#基本安裝 (補全缺失內容)

開始

在開始之前,說一下本次記錄的目的 部署kubernetes單機集群
在理解k8s之前,先不管啥情況,把東西跑起來,與我最熟悉的東西關聯起來,這樣我個人覺得有助于各種理解,至少比上來接觸一堆“奇奇怪怪的概念”要強。

// todo docker 詳細文章(待完成。。。)
// todo k8s 其他相關內容(待完成。。。)
// todo 概念還是要懂的,回頭在補上 (待完成。。。)

環境

基本配置

內容 參數
操作系統 centos7
機器環境 VMware虛擬機
部署目標 tomcat任意版本

虛擬機配置

內容 參數
網卡模式 NAT
CPU核心數 2
內存 2G

基本安裝

安裝docker

// 安裝docker
$ yum install -y docker-ce
// 開機啟動 && 啟動服務
$ systemctl enable docker && systemctl start docker

安裝必要命令

# 在/etc/yum.repos.d 下創建k8s.repos, 并添加如下內容

name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
       http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
// 安裝
yum install -y kubelet kubeadm kubectl
systemctl enable kubelet  && systemctl start kubelet

拉取鏡像

google 鏡像并不在docker庫中,因此要防止墻的問題,需要找代替鏡像

// 查看kubeadm鏡像
$ kubeadm config images list

// 結果
k8s.gcr.io/kube-apiserver:v1.13.3
k8s.gcr.io/kube-controller-manager:v1.13.3
k8s.gcr.io/kube-scheduler:v1.13.3
k8s.gcr.io/kube-proxy:v1.13.3
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd:3.2.24
k8s.gcr.io/coredns:1.2.6

// 執行如下腳本(沒有翻墻的同學只能通過阿里云鏡像或者其他鏡像)
$ for i in `kubeadm config images list`; do 
  imageName=${i#k8s.gcr.io/}
  docker pull registry.aliyuncs.com/google_containers/$imageName
  docker tag registry.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName
  docker rmi registry.aliyuncs.com/google_containers/$imageName
done;

// 開機啟動 && 啟動服務
$ systemctl enable kubelet && systemctl start kubelet

k8s集群初始化

開通必要端口號 防止不必要的問題出現

// 6443
firewall-cmd --zone=public --add-port=6443/tcp --permanent && firewall-cmd --reload
// 10250
firewall-cmd --zone=public --add-port=10250/tcp --permanent && firewall-cmd --reload
// 安裝命令
$ kubeadm init

安裝過程中遇到的問題

[ERROR NumCPU]: the number of available CPUs 1 is less than the required 2

// 解決:
// 虛擬機修改配置
image.png
[ERROR FileContent--proc-sys-net-bridge-bridge-nf-call-iptables]: /proc/sys/net/bridge/bridge-nf-call-iptables contents are not set to 1

// 解決:
// 編輯配置
$ vi /etc/sysctl.conf
// 添加如下內容
net.bridge.bridge-nf-call-iptables = 1
[ERROR Swap]: running with swap on is not supported. Please disable swap

// 解決:
// 禁用swap功能
$ swapoff -a

// 修改配置
$ vi /etc/fstab
# 注釋如下內容
# k8s need disabled
# /dev/mapper/centos-swap swap                    swap    defaults        0 0

安裝成功

Your Kubernetes master has initialized successfully!

安裝完成后的配置

// 安裝成功后根據提示配置
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
// master 參與工作(單機模式必備)
kubectl taint nodes --all node-role.kubernetes.io/master-

這邊有一個BUG遇到,實際服務器可能不存在,但是虛擬機使用NAT模式,并且網卡配置為dhcp模式,動態獲取ip
導致一些里問題
eg:coredns 啟動失敗
eg:kube-apiserver-localhost.localdomain 啟動失敗
解決改為靜態配置

BOOTPROTO=static

// ...省略...

# ip 為自己實際環境ip
IPADDR=192.168.228.128
GATEWAY=192.168.228.2
NETMASK=255.255.255.0
# DNS酌情處理但是必須要加
DNS1=8.8.8.8
DNS2=114.114.114.114

查看k8s集群情況(現在只有system pod)

$ kubectl get pods --all-namespaces

// 結果如下
kube-system   coredns-86c58d9df4-48pxx                        1/1     Running   0          6m10s
kube-system   coredns-86c58d9df4-wdlmr                        1/1     Running   0          6m10s
kube-system   etcd-localhost.localdomain                      1/1     Running   0          5m22s
kube-system   kube-apiserver-localhost.localdomain            1/1     Running   0          5m18s
kube-system   kube-controller-manager-localhost.localdomain   1/1     Running   0          5m4s
kube-system   kube-proxy-56m56                                1/1     Running   0          6m10s
kube-system   kube-scheduler-localhost.localdomain            1/1     Running   0          5m18s
kube-system   weave-net-585s5                                 2/2     Running   0          60s

開啟單機模式

$kubectl taint nodes --all node-role.kubernetes.io/master-

查看master節點情況

不要慌,這里NotReady 完全正常
安裝網卡插件后,查詢即可變為Ready

$ kubectl get nodes
// 結果
localhost.localdomain   NotReady    master   144m   v1.13.3

安裝網絡插件

// 這邊有很多選擇,本次使用`weave`
// 配置地址 https://kubernetes.io/docs/concepts/cluster-administration/addons/

$ kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"

配置tomcat RC

配置docker鏡像

// 查看所需要鏡像
docker search tomcat
// 下載tag為tomcat的images(默認版本為lasted)
docker pull tomcat

replicas: 1 pod實例個數為1
image: tomcat docker鏡像
name: tomcat-demo rc名稱
spec:template: 當運行實例個數小于replicas時候,rc會根據spec:template: 自動生成對應個數pod

apiVersion: v1
kind: ReplicationController
metadata:
  name: tomcat-demo
spec:
  replicas: 1
  selector:
    app: tomcat-demo
  template:
    metadata:
      labels:
        app: tomcat-demo
    spec:
      containers:
      - name: tomcat-demo
        image: tomcat
        ports:
        - containerPort: 8080

運行配置并查看結果

// 運行yaml
$ kubectl create -f tomcat-demo-rc.yaml
// 結果如下
tomcat-demo   NodePort    10.105.57.5   <none>        8080:30001/TCP   14s

配置tomcat service

nodePort: 30001 映射端口8080:30001
name: tomcat-demo 服務名

tomcat-demo-svc.yaml配置文件內容

apiVersion: v1
kind: Service
metadata:
  name: tomcat-demo
spec:
  type: NodePort
  ports:
   - port: 8080
     nodePort: 30001
  selector:
    app: tomcat-demo

運行配置并查看結果

// 運行yaml
$ kubectl create -f tomcat-demo-svc.yaml
// 結果如下
tomcat-demo   NodePort    10.105.57.5   <none>        8080:30001/TCP   14s

注意 svc與rc文件可以寫在同一個yaml中
開通端口號

$ firewall-cmd --zone=public --add-port=30001/tcp --permanent && firewall-cmd --reload

查看戰果

瀏覽器中查看結果 http://${ip地址}:30001/

image.png

總結

安裝過生中遇到不少坑,但是都都克服了,最后加入tomcat環節我覺得很有必要,作為初學者,很多文章,都在講“k8s集群”, 各種集群部署文章,跟著流程安裝了一圈,對錯與否都模棱兩可,還是需要一個“可視化的結果”

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,825評論 6 546
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,814評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,980評論 0 384
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 64,064評論 1 319
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,779評論 6 414
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,109評論 1 330
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,099評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,287評論 0 291
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,799評論 1 338
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,515評論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,750評論 1 375
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,221評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,933評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,327評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,667評論 1 296
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,492評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,703評論 2 380

推薦閱讀更多精彩內容