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

相關推薦

  • 文本處理工具sed

    一個強大的文本處理sed,行編輯器

    2018-04-19
  • shell

    shell 內外部命令

    2018-04-07
  • 從小白到小白😂

    不知道寫啥,用我寫的腳本練習題湊湊數

    Linux筆記 2018-04-15
  • 在VM中安裝CentOS6.10

    CenOS6.10詳細安裝過程,用于課堂筆記

    2018-07-19
  • 第二周作業

    第二周作業 一、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。 pwd: ?顯示當前的工作目錄 -P 顯示真實物理路徑 -L 顯示鏈接路徑(默認)   cd: ?改變目錄 使用絕對路徑或者相對路徑: cd /root/Desktop? cd Desktop/ 切換至父目錄: cd .. 切換至當前用戶主目錄: cd 切換至…

    2018-07-06
  • Linux上的文件管理類命令

    常用的文件目錄管理命令:cd,pwd,ls,mkdir,rmdir,tree,more,less,head,tail,cp,mv,rm。 cd命令:改變目錄 后面加絕對或者相對路徑 命令格式:cd [options] [Dirname] [Azuth@azuth ~]$ cd /home/Azuth[Azuth@azuth ~]$ pwd/home/Azut…

    Linux筆記 2018-05-20
欧美性久久久久