kubespray-2.14.2安裝kubernetes-1.18.10(ubuntu-20.04.1)

歡迎訪問我的GitHub

https://github.com/zq2599/blog_demos

內(nèi)容:所有原創(chuàng)文章分類匯總及配套源碼,涉及Java培愁、Docker节沦、Kubernetes柑爸、DevOPS等确丢;

關(guān)于kubespray

Kubespray是開源的kubernetes部署工具闲礼,整合了ansible浸锨,可以方便的部署高可用集群環(huán)境榨咐,官網(wǎng)地址:https://github.com/kubernetes-sigs/kubespray百侧,本文是用kubespray-2.14.2版本部署kuberneteskubernetes-1.18.10版本的實戰(zhàn)砰识;

重要前提

本次實戰(zhàn)采用官方推薦的在線安裝,因此會去谷歌鏡像倉庫下載鏡像佣渴,<font color="red">需要您的網(wǎng)絡(luò)可以訪問谷歌服務(wù)</font>辫狼;

機(jī)器信息

  • 因為作者太窮,本次實戰(zhàn)籌集到共計兩臺機(jī)器辛润,它們的主機(jī)名膨处、IP地址和作用描述如下:
主機(jī)名 IP地址 作用 操作系統(tǒng)
ansible 192.168.50.134 ansible主機(jī) CentOS7
node1 192.168.50.27 k8s服務(wù)器 ubuntu-20.04.1
  • 可見kubernetes是被部署在<font color="blue">ubuntu電腦</font>上;

標(biāo)準(zhǔn)化設(shè)置

ubuntu電腦要做以下設(shè)置:

  1. 修改/etc/hostname频蛔,設(shè)置好主機(jī)名
  2. 修改/etc/hosts灵迫,將自己的主機(jī)名和IP地址添加進(jìn)去
  3. 關(guān)閉防火墻
ufw disable
  1. 再次查看應(yīng)該是關(guān)閉狀態(tài)
root@ideapad:~# ufw status
狀態(tài):不活動
  1. 關(guān)閉selinux,如果提示安裝<font color="blue">selinux-utils</font>晦溪,表示selinux沒有安裝瀑粥,就不用關(guān)系了
setenforce 0
  1. ipv4網(wǎng)絡(luò)設(shè)置
modprobe br_netfilter
echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables
sysctl -w net.ipv4.ip_forward=1
  1. 立即禁用交換分區(qū)
swapoff -a
  1. 我的電腦上,禁用前的內(nèi)存情況
root@ideapad:~# free -m
              總計         已用        空閑      共享    緩沖/緩存    可用
內(nèi)存:       31913         551       30288         137        1073       30839
交換:        2047           0        2047
  1. 執(zhí)行了<font color="blue">swapoff -a</font>后再看三圆,可見全部為0了
root@ideapad:~# free -m
              總計         已用        空閑      共享    緩沖/緩存    可用
內(nèi)存:       31913         557       30281         137        1073       30833
交換:           0           0           0
  1. 以上禁用交換分區(qū)的方法狞换,雖然立即生效了,但是重啟電腦后依舊恢復(fù)了交換分區(qū)的使用舟肉,要徹底禁用修噪,請打開文件<font color="blue">/etc/fstab</font>,在下圖紅框這一行最前面添加<font color="red">#</font>


    在這里插入圖片描述

ansible主機(jī)免密碼ssh登錄

  1. ssh登錄ansible主機(jī)路媚;
  2. 生成ssh公私鑰黄琼,輸入命令<font color="blue">ssh-keygen</font>,然后連續(xù)四次回車:
  3. 輸入命令<font color="blue">ssh-copy-id root@192.168.50.27</font>整慎,將ansible的ssh分發(fā)給ubuntu主機(jī)脏款,會要求輸入yes和ubuntu主機(jī)的root賬號的密碼,完成輸入后裤园,以后ansible就可以免密碼ssh登錄ubuntu主機(jī)了:

ansible主機(jī)操作

  1. ssh登錄ansible主機(jī)撤师;
  2. 安裝ansible應(yīng)用:
yum install -y epel-release ansible
  1. 安裝pip:
easy_install pip
  1. 通過pip安裝jinja2:
pip2 install jinja2 --upgrade
  1. 安裝python36:
yum install python36 -y
  1. 創(chuàng)建工作目錄,進(jìn)入工作目錄:
mkdir /usr/local/kubespray && cd /usr/local/kubespray/
  1. 下載kubespray拧揽,我這里下載的是<font color="blue">v2.14.2</font>版本:
wget https://github.com/kubernetes-sigs/kubespray/archive/v2.14.2.tar.gz
  1. 解壓:
tar -zxvf v2.14.2.tar.gz
  1. 進(jìn)入解壓后的目錄:
cd kubespray-2.14.2/
  1. 安裝kubespray所需的應(yīng)用(注意是<font color="red">pip3</font>):
pip3 install -r requirements.txt
  1. 復(fù)制一份demo配置信息到目錄<font color="blue">inventory/mycluster</font>:
cp -rfp inventory/sample inventory/mycluster
  1. 進(jìn)去看一下剃盾,可見mycluster目錄下復(fù)制了很多文件:
[root@kubespray kubespray-2.14.2]# tree inventory/
inventory/
├── local
│   ├── group_vars -> ../sample/group_vars
│   └── hosts.ini
├── mycluster
│   ├── group_vars
│   │   ├── all
│   │   │   ├── all.yml
│   │   │   ├── aws.yml
│   │   │   ├── azure.yml
│   │   │   ├── containerd.yml
│   │   │   ├── coreos.yml
│   │   │   ├── docker.yml
│   │   │   ├── gcp.yml
│   │   │   ├── oci.yml
│   │   │   ├── openstack.yml
│   │   │   └── vsphere.yml
│   │   ├── etcd.yml
│   │   └── k8s-cluster
│   │       ├── addons.yml
│   │       ├── k8s-cluster.yml
│   │       ├── k8s-net-calico.yml
│   │       ├── k8s-net-canal.yml
│   │       ├── k8s-net-cilium.yml
│   │       ├── k8s-net-contiv.yml
│   │       ├── k8s-net-flannel.yml
│   │       ├── k8s-net-kube-router.yml
│   │       ├── k8s-net-macvlan.yml
│   │       └── k8s-net-weave.yml
│   └── inventory.ini
└── sample
    ├── group_vars
    │   ├── all
    │   │   ├── all.yml
    │   │   ├── aws.yml
    │   │   ├── azure.yml
    │   │   ├── containerd.yml
    │   │   ├── coreos.yml
    │   │   ├── docker.yml
    │   │   ├── gcp.yml
    │   │   ├── oci.yml
    │   │   ├── openstack.yml
    │   │   └── vsphere.yml
    │   ├── etcd.yml
    │   └── k8s-cluster
    │       ├── addons.yml
    │       ├── k8s-cluster.yml
    │       ├── k8s-net-calico.yml
    │       ├── k8s-net-canal.yml
    │       ├── k8s-net-cilium.yml
    │       ├── k8s-net-contiv.yml
    │       ├── k8s-net-flannel.yml
    │       ├── k8s-net-kube-router.yml
    │       ├── k8s-net-macvlan.yml
    │       └── k8s-net-weave.yml
    └── inventory.ini

10 directories, 45 files
  1. 設(shè)置集群信息(當(dāng)前目錄仍舊是kubespray-2.14.2):
declare -a IPS=(192.168.50.27)
  1. 配置ansible:
CONFIG_FILE=inventory/mycluster/hosts.yml python3 contrib/inventory_builder/inventory.py ${IPS[@]}
  1. 此時kubespray的腳本根據(jù)輸入的IP信息做好了集群規(guī)劃腺占,具體信息可見<font color="blue">inventory/mycluster/hosts.yml</font>,如下所示痒谴,您也可以自行修改此文件:
[root@kubespray kubespray-2.14.2]# cat inventory/mycluster/hosts.yml
all:
  hosts:
    node1:
      ansible_host: 192.168.50.27
      ip: 192.168.50.27
      access_ip: 192.168.50.27
  children:
    kube-master:
      hosts:
        node1:
    kube-node:
      hosts:
        node1:
    etcd:
      hosts:
        node1:
    k8s-cluster:
      children:
        kube-master:
        kube-node:
    calico-rr:
      hosts: {}
  1. 執(zhí)行以下命令即可開始安裝衰伯,在線安裝比較耗時請耐心等待:
ansible-playbook -i inventory/mycluster/hosts.yml --become --become-user=root cluster.yml
  1. 遇到網(wǎng)絡(luò)問題失敗退出時很常見的事情,此時將上述命令重復(fù)執(zhí)行即可闰歪,ansible對于已經(jīng)執(zhí)行過的命令會跳過的嚎研;
  2. 安裝完成時控制臺輸出類似如下的信息(太多了,省略了一些):
Saturday 21 November 2020  17:47:18 +0800 (0:00:00.025)       0:30:03.154 ***** 
Saturday 21 November 2020  17:47:18 +0800 (0:00:00.024)       0:30:03.179 ***** 

PLAY RECAP **********************************************************************************************************************************************************
localhost                  : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
node1                      : ok=591  changed=95   unreachable=0    failed=0    skipped=1131 rescued=0    ignored=0   

Saturday 21 November 2020  17:47:18 +0800 (0:00:00.021)       0:30:03.200 ***** 
=============================================================================== 
download : download_file | Download item ------------------------------------------------------------------------------------------------------------------ 1008.61s
kubernetes/preinstall : Update package management cache (APT) ---------------------------------------------------------------------------------------------- 119.25s
download : download_container | Download image if required -------------------------------------------------------------------------------------------------- 42.36s
download : download_container | Download image if required -------------------------------------------------------------------------------------------------- 38.26s
download : download_container | Download image if required -------------------------------------------------------------------------------------------------- 37.31s
download : download_container | Download image if required -------------------------------------------------------------------------------------------------- 36.60s
download : download_container | Download image if required -------------------------------------------------------------------------------------------------- 35.01s
download : download_container | Download image if required -------------------------------------------------------------------------------------------------- 34.00s
download : download_container | Download image if required -------------------------------------------------------------------------------------------------- 30.55s
download : download_container | Download image if required -------------------------------------------------------------------------------------------------- 27.47s
download : download_container | Download image if required -------------------------------------------------------------------------------------------------- 26.78s
kubernetes/master : kubeadm | Initialize first master ------------------------------------------------------------------------------------------------------- 25.98s
download : download_container | Download image if required -------------------------------------------------------------------------------------------------- 23.42s
download : download_container | Download image if required -------------------------------------------------------------------------------------------------- 22.14s
download : download_container | Download image if required -------------------------------------------------------------------------------------------------- 21.50s
download : download_container | Download image if required -------------------------------------------------------------------------------------------------- 20.17s
download : download_container | Download image if required -------------------------------------------------------------------------------------------------- 17.55s
container-engine/docker : ensure docker packages are installed ----------------------------------------------------------------------------------------------- 9.73s
kubernetes/master : Master | wait for kube-scheduler --------------------------------------------------------------------------------------------------------- 7.83s
kubernetes-apps/ansible : Kubernetes Apps | Lay Down CoreDNS Template ---------------------------------------------------------------------------------------- 6.93s
  1. 至此库倘,kubernetes集群環(huán)境部署完成临扮,接下來簡單驗證一下環(huán)境是否可用;

檢查環(huán)境

  1. ssh登錄ubuntu機(jī)器教翩;
  2. 查看節(jié)點杆勇、service、pod:
root@node1:~# kubectl get node -o wide
NAME    STATUS   ROLES    AGE    VERSION    INTERNAL-IP     EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION     CONTAINER-RUNTIME
node1   Ready    master   104m   v1.18.10   192.168.50.27   <none>        Ubuntu 20.04.1 LTS   5.4.0-54-generic   docker://19.3.12
root@node1:~# kubectl get node -o wide
NAME    STATUS   ROLES    AGE    VERSION    INTERNAL-IP     EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION     CONTAINER-RUNTIME
node1   Ready    master   105m   v1.18.10   192.168.50.27   <none>        Ubuntu 20.04.1 LTS   5.4.0-54-generic   docker://19.3.12
root@node1:~# kubectl get services --all-namespaces
NAMESPACE     NAME                        TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                  AGE
default       kubernetes                  ClusterIP   10.233.0.1      <none>        443/TCP                  105m
kube-system   coredns                     ClusterIP   10.233.0.3      <none>        53/UDP,53/TCP,9153/TCP   104m
kube-system   dashboard-metrics-scraper   ClusterIP   10.233.12.230   <none>        8000/TCP                 104m
kube-system   kubernetes-dashboard        ClusterIP   10.233.61.24    <none>        443/TCP                  104m
root@node1:~# kubectl get pods --all-namespaces
NAMESPACE     NAME                                          READY   STATUS    RESTARTS   AGE
kube-system   calico-kube-controllers-6ccb68f9b5-kwqck      1/1     Running   0          104m
kube-system   calico-node-4lmpf                             1/1     Running   0          104m
kube-system   coredns-dff8fc7d-2gnl8                        1/1     Running   0          104m
kube-system   coredns-dff8fc7d-4vthn                        0/1     Pending   0          104m
kube-system   dns-autoscaler-66498f5c5f-qh4vb               1/1     Running   0          104m
kube-system   kube-apiserver-node1                          1/1     Running   0          105m
kube-system   kube-controller-manager-node1                 1/1     Running   0          105m
kube-system   kube-proxy-kk84b                              1/1     Running   0          105m
kube-system   kube-scheduler-node1                          1/1     Running   0          105m
kube-system   kubernetes-dashboard-667c4c65f8-8ckf5         1/1     Running   0          104m
kube-system   kubernetes-metrics-scraper-54fbb4d595-dk42t   1/1     Running   0          104m
kube-system   nodelocaldns-d69h9                            1/1     Running   0          104m
  • 可見一些必須的pod和服務(wù)都已經(jīng)啟動了饱亿,接下來試試dashboard能否正常訪問蚜退;

訪問dashboard

dashboard可以查看kubernetes系統(tǒng)的整體情況,為了訪問dashboard頁面彪笼,需要增加RBAC:

  1. ssh登錄ubuntu機(jī)器钻注;
  2. 執(zhí)行以下命令,創(chuàng)建文件<font color="blue">admin-user.yaml</font>:
tee admin-user.yaml <<-'EOF'
apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kube-system
EOF
  1. 執(zhí)行以下命令配猫,創(chuàng)建文件<font color="blue">admin-user-role.yaml</font>:
tee admin-user-role.yaml <<-'EOF'
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: kube-system
EOF
  1. 創(chuàng)建ServiceAccount和ClusterRoleBinding:
kubectl create -f admin-user.yaml && kubectl create -f admin-user-role.yaml
  1. 將<font color="blue">kubernetes-dashboard</font>這個服務(wù)的類型從ClusterIP改為NodePort幅恋,這樣我們就能從瀏覽器訪問dashboard了:
kubectl  patch svc kubernetes-dashboard -n kube-system \
> -p '{"spec":{"type":"NodePort","ports":[{"port":443,"targetPort":8443,"nodePort":30443}]}}'
  1. 再看服務(wù),已經(jīng)成功改為<font color="blue">NodePort </font>:
root@node1:~# kubectl get service --all-namespaces
NAMESPACE     NAME                        TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                  AGE
default       kubernetes                  ClusterIP   10.233.0.1      <none>        443/TCP                  132m
kube-system   coredns                     ClusterIP   10.233.0.3      <none>        53/UDP,53/TCP,9153/TCP   131m
kube-system   dashboard-metrics-scraper   ClusterIP   10.233.12.230   <none>        8000/TCP                 131m
kube-system   kubernetes-dashboard        NodePort    10.233.61.24    <none>        443:30443/TCP            131m
  1. 獲取token看泵肄,用于登錄dashboard頁面:
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')
  1. 下圖紅框中就是token的內(nèi)容:
在這里插入圖片描述
  1. 現(xiàn)在通過瀏覽器訪問dashboard頁面了捆交,地址是:https://192.168.50.27:30443 ,其中<font color="blue">192.168.50.27</font>是ubuntu機(jī)器的IP地址腐巢;
  2. 由于不是https協(xié)議品追,因此瀏覽器可能彈出安全提示,如下圖冯丙,選擇<font color="blue">繼續(xù)前往</font>:
在這里插入圖片描述
  1. 此時頁面會讓您選擇登錄方式肉瓦,選擇<font color="blue">令牌</font>并輸入前面得到的token,即可登錄:
在這里插入圖片描述
  1. 登錄成功后可以見到系統(tǒng)信息胃惜,如下圖:
在這里插入圖片描述

至此风宁,kubespray-2.14.2安裝kubernetes-1.18.10完成,希望本文能給您一些參考蛹疯。

你不孤單,欣宸原創(chuàng)一路相伴

  1. Java系列
  2. Spring系列
  3. Docker系列
  4. kubernetes系列
  5. 數(shù)據(jù)庫+中間件系列
  6. DevOps系列

歡迎關(guān)注公眾號:程序員欣宸

微信搜索「程序員欣宸」热监,我是欣宸捺弦,期待與您一同暢游Java世界...
https://github.com/zq2599/blog_demos

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子列吼,更是在濱河造成了極大的恐慌幽崩,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件寞钥,死亡現(xiàn)場離奇詭異慌申,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)理郑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進(jìn)店門蹄溉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人您炉,你說我怎么就攤上這事柒爵。” “怎么了赚爵?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵棉胀,是天一觀的道長。 經(jīng)常有香客問我冀膝,道長唁奢,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任窝剖,我火速辦了婚禮麻掸,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘枯芬。我一直安慰自己论笔,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布千所。 她就那樣靜靜地躺著狂魔,像睡著了一般。 火紅的嫁衣襯著肌膚如雪淫痰。 梳的紋絲不亂的頭發(fā)上最楷,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天,我揣著相機(jī)與錄音待错,去河邊找鬼籽孙。 笑死,一個胖子當(dāng)著我的面吹牛火俄,可吹牛的內(nèi)容都是我干的犯建。 我是一名探鬼主播,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼瓜客,長吁一口氣:“原來是場噩夢啊……” “哼适瓦!你這毒婦竟也來了竿开?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤玻熙,失蹤者是張志新(化名)和其女友劉穎否彩,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嗦随,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡列荔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了枚尼。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贴浙。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖姑原,靈堂內(nèi)的尸體忽然破棺而出悬而,到底是詐尸還是另有隱情,我是刑警寧澤锭汛,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布笨奠,位于F島的核電站,受9級特大地震影響唤殴,放射性物質(zhì)發(fā)生泄漏般婆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一朵逝、第九天 我趴在偏房一處隱蔽的房頂上張望蔚袍。 院中可真熱鬧,春花似錦配名、人聲如沸啤咽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽宇整。三九已至,卻和暖如春芋膘,著一層夾襖步出監(jiān)牢的瞬間鳞青,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工为朋, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留臂拓,地道東北人。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓习寸,卻偏偏與公主長得像胶惰,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子霞溪,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,037評論 2 355

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