K8S的安裝

使用kubeadm安裝部署kubernetes集群:

前提:
1、各節點時間同步;
2、各節點主機名稱解析:dns OR hosts;
3、各節點iptables及firewalld服務被disable;

一、設置主節點安裝程序包

1、生成yum倉庫配置:

主管理節點上的yum倉庫的配置:

先配置安裝docker倉庫:

[docker]
name=docker
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/
gpgcheck=0

[extras]
name=extras
baseurl=http://vault.centos.org/7.4.1708/extras/x86_64/
gpgcheck=0

配置kubernetes的倉庫配置文件:

[kubernetes]
name=kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
gpgcheck=0

QQ截圖20180808204518

將主節點上配置的yum倉庫復制到其他的兩個節點上:nod01;nod02

2、安裝相關的程序包 :

yum install docker-ce kubelet kubeadm kubectl? (生產中建議使用docker-ce的17.3的版本)

vim /usr/lib/systemd/system/docker.service? (修改docker的配置文件)

Environment=”HTTPS_PROXY=http://www.ik8s.io:10080″ Environment=”NO_PROXY=127.0.0.0/8,172.20.0.0/16″

(對訪問到國外的鏡像網站做代理,如果從本地下載的鏡像則不做代理:添加在12行)

systemctl daemon-reload ? (重新加載配置文件)

systemctl start docker? (開啟docker服務)

systemctl enable docker? (設為開機自啟動模式)

docker info ? (查看定義的信息是否生效)

cat /proc/sys/net/bridge/bridge-nf-call-iptables? (查看本機的的此值是否為1)

cat /proc/sys/net/bridge/bridge-nf-call-ip6tables (查看本機的的此值是否為1)

(如果值不為1,要改為1)

systemctl enable kubelet? (將kubelet設為開機自啟動)

初始化master節點:

vim /etc/sysconfig/kubelet(修改配置文件)

KUBELET_EXTRA_ARGS=”–fail-swap-on=false” (忽略swap的報錯)
# kubeadm init –kubernetes-version=v1.11.1 –pod-network-cidr=10.244.0.0/16 service-cidr=10.96.0.0/12 –ignore-preflight-errors=Swap? (此選項可以通過kubeadm init –help)

(–kubernetes-version=v1.11.1:指定版本號不指定也可以通過查看help幫助有默認的版本)

(–pod-network-cidr=10.244.0.0/16? :指定pod的網絡地址)

(service-cidr=10.96.0.0/12? :指定service得 網絡地址,也可通過查看help幫助里有定義 )

(–ignore-preflight-errors=Swap? :忽略Swap信息)

裝好之后將最后一行復制下來備用:

kubeadm join 172.20.49.2:6443 –token h1jv8k.9mjlazp98lx3u9xl –discovery-token-ca-cert-hash sha256:56a94c74f003b7cbe1bcaa9d673cf605dfe8a6887024ef9f369acbe0ac2d09a2

docker image list? :查看鏡像是否下載到本地:

QQ截圖20180808214042

ss -nlt? (查看6443端口是否開啟)

mkdir -p $HOME/.kube ? (創建一個隱藏目錄)

cp -i /etc/kubernetes/admin.conf $HOME/.kube/config (復制文件到剛創建的目錄 下)

測試:
kubectl get componentstatus? (查看組件信息)

kubectl get nodes ?? (查看集群節點的信息)

QQ截圖20180808221240

添加flannel網絡插件
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
查看本機的flannel鏡像有沒有下載下來:docker image ls

再次查看master節點已經就緒(ready)
kubectl get nodes

kubectl get pods -n kube-system

在nod01節點上:(主機點通過主機名來管理的,需要將從節點點的主機名設置為不同的名稱)

yum install docker-ce kubelet kubeadm ? (安裝包)

scp /usr/lib/systemd/system/docker.service 192.168.60.20:/usr/lib/systemd/system/docker.service

scp /etc/sysconfig/kubelet 192.168.60.20:/etc/sysconfig/

在主節點上執行;將主節點的配置文件復制到從節點上,省的再修改了)

systemctl start docker? (啟動服務)

systemctl enable docker kubelet? (設置為開機自啟)

docker info (查看復制過來的配置文件是否生效)

QQ截圖20180809100356

kubeadm join 172.20.49.2:6443 –token h1jv8k.9mjlazp98lx3u9xl –discovery-token-ca-cert-hash sha256:56a94c74f003b7cbe1bcaa9d673cf605dfe8a6887024ef9f369acbe0ac2d09a2 –ignore-preflight-errors=Swap ?? (將從節點加入到主節點上去,上面的內容來自主節點剛剛保存下來備用的)

QQ截圖20180809100845

docker image ls ? (查看本節點的鏡像下載內容)

kubectl get nodes ? (在主節點上執行此條命令,查看自己是否加入到主節點的管理中)

QQ截圖20180808223632

nod02的加入方式和nod01的添加方式相同。

 

 

K8S的工作架構:?QQ截圖20180809092004

在K8S里pod為最小的模塊:pod是同一種應用的多個容器的組合,靠控制器來管理,如果定義了某個pod里有三個httpd程序的容器,如果某個容器宕機了,控制器會將其刪掉再次新建一個。

控制器又需要控制器管理器來管理,來防止控制器服務的不可用。

service:由于pod里的容器會隨時創建或者刪除,其地址不是固定的,如果需要訪問pod里的容器,會變得很困難,service是將pod里容器的IP地址變成固定可訪問的地址,當外部客戶端訪問pod容器時,經過service的調度轉發給內部的pod里的容器。service,只是iptables的一條規則或者ipvs的一條規則,不存在于任何虛擬的IP網卡和物理網卡之上。

service是如何將外部的訪問發送給pod里的容器,(容器的IP地址經常變動)

service不是通過IP地址來聯通pod里的容器的,而是通過應用的標簽名稱,來聯通的。K8S內部有虛擬的DNS服務器。將pod里的容器名稱標簽和其IP地址對應上,如果刪除或者新建一個容器,DNS記錄會自動添加一條A記錄的。

K8S的網絡架構:

8KKDMNCKNVFN ? QQ截圖20180807121317

K8S內部有三層的虛擬網絡:容器的虛擬網絡;pod的虛擬網絡;service的虛擬網絡。

pod內部的容器是可以相互通信的用的相同的網絡名稱空間。

pod和pod的通信,如果在同一個物理節點上則通過pod網絡來通信。如果不在同一個物理節點上則需要通過service層的網絡來轉發代理。

 

 

 

 

 

 

 

 

 

 

 

 

 

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/104669

(10)
無所謂無所謂
上一篇 2018-08-08
下一篇 2018-08-08

相關推薦

  • dns看圖來配,思路一下明了

      1.子域授權: 每個域的名稱服務器,都是通過其上級名稱服務在解析庫中進行授權。 如:根域授權頂級域是怎么做的? 說明.com.這個域?? 它的ns服務器是主機名ns1.com.;2.com. .com.???? IN? NS??? ns1.com. .com.???? IN? NS??? ns2.com. ns1.com.?? IN?? A??…

    Linux筆記 2018-06-03
  • history man info tab 的用法

    “whatis conmand =man -f cm 簡單說明 centos6 安裝what is 輸入 make whatis centos7 創建 mandb “內部命令用 help conmand 外部命令 用 command –help 外部命令 man command (外部命令用man比較詳細) 可以用/ 搜 …

    Linux筆記 2018-03-31
  • 第四周作業

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。cp -r /etc/skel/ /home/tuser1chmod -R go= /home/tuser1 2、編輯/etc/group文件,添加組hadoop。vi /etc/groupG 跳到最后一行o 進入輸入模式添加…

    Linux筆記 2018-05-30
  • 磁盤管理知識

    磁盤管理知識 1.tune2fs(調整文件系統參數) ???? [root@centos6 ~]#tune2fs -i 3 /dev/sdb (interval 間隔,即3天檢查一次) ???? tune2fs 1.41.12 (17-May-2010) ???? Setting interval between checks to 259200 secon…

    Linux筆記 2018-04-24
  • Linux基礎命令——cp簡介

    問世間情為何物,直教人生死相許

    2018-04-03
  • linux常用命令

    系統信息?arch 顯示機器的處理器架構(1)uname -m 顯示機器的處理器架構(2)uname -r 顯示正在使用的內核版本dmidecode -q 顯示硬件系統部件 – (SMBIOS / DMI)hdparm -i /dev/hda 羅列一個磁盤的架構特性hdparm -tT /dev/sda 在磁盤上執行測試性讀取操作cat /pro…

    2018-03-17
欧美性久久久久