一:本章目錄
- Kubernetes介紹
- 所需組件功能介紹
- 環境規劃與說明
- 部署流程
- 小結
二:Kubernetes介紹
1·概述:kubernetes,簡稱K8s,是用8代替8個字符“ubernete”而成的縮寫。是一個開源的,用於管理雲平臺中多個主機上的容器化的應用,Kubernetes的目標是讓部署容器化的應用簡單並且高效(powerful),Kubernetes提供了應用部署,規劃,更新,維護的一種機制。
傳統的應用部署方式是通過插件或腳本來安裝應用。這樣做的缺點是應用的運行、配置、管理、所有生存週期將與當前操作系統綁定,這樣做並不利於應用的升級更新/回滾等操作,當然也可以通過創建虛擬機的方式來實現某些功能,但是虛擬機非常重,並不利於可移植性。
2·Kubernetes 特點:
- 可移植: 支持公有云,私有云,混合雲,多重雲(multi-cloud)
- 可擴展: 模塊化,插件化,可掛載,可組合
- 自動化: 自動部署,自動重啓,自動複製,自動伸縮/擴展
三:所需組件功能介紹
組件名稱 | 組件作用 | 組件所在節點 |
---|---|---|
ETCD | etcd是Kubernetes提供默認的存儲系統,保存所有集羣數據,使用時需要爲etcd數據提供備份計劃。 | Master |
kube-apiserver | kube-apiserver用於暴露Kubernetes API。任何的資源請求/調用操作都是通過kube-apiserver提供的接口進行。 | Master |
kube-controller-manager | kube-controller-manager運行管理控制器,它們是集羣中處理常規任務的後臺線程。邏輯上,每個控制器是一個單獨的進程,但爲了降低複雜性,它們都被編譯成單個二進制文件,並在單個進程中運行。 | Master |
kube-scheduler | 監視新創建沒有分配到Node的Pod,爲Pod選擇一個Node。 | Master |
kubelet | kubelet是主要的節點代理,它會監視已分配給節點的pod | Node |
kube-proxy | kube-proxy通過在主機上維護網絡規則並執行連接轉發來實現Kubernetes服務抽象。 | Node |
docker | docker用於運行容器 | Node和Master |
四:環境規劃與說明
主機名 | IP | 需安裝的組件 |
---|---|---|
Master(centos7.4) | 192.168.243.128 | etcd、kube-apiserver、kube-controller-manager、kube-scheduler、docker |
Node1(centos7.4) | 192.168.243.149 | kubelet、kube-proxy、docker |
Node2(centos7.4) | 192.168.243.150 | kubelet、kube-proxy、docker |
說明:1·關閉 firewalld 2· 關閉 selinux 3· 關閉 swap 交換分區 4·用2G內存、2個cpu。
五:部署流程
5.1 master與node節點做好域名解析、關閉 firewalld 、關閉 selinux 、關閉 swap 交換分區
[root@master ~]# systemctl stop firewalld
[root@master ~]# vim /etc/selinux/config
SELINUX=disabled //修改爲disabled
[root@master ~]# swapoff /dev/mapper/centos-swap //做好域名解析
[root@master ~]# vim /etc/hosts127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6192.168.243.128 master
192.168.243.149 node1
192.168.243.150 node2
5.2安裝ipvs 模塊:
cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
EOF
chmod 755 /etc/sysconfig/modules/ipvs.modules && bash
/etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4
5.3配置鏡像地址開始安裝,以下在Master、Node 都需要安裝
[root@master ~]#cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
[root@master ~]# yum install -y kubelet kubeadm kubectl //安裝k8s客戶端工具
[root@master ~]# yum install -y yum-utils device-mapper-persistent-data lvm2 //安裝系統必要工具
[root@master ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo //添加軟件源信息
[root@master ~]# yum makecache fast
[root@master ~]# yum -y install docker-ce //更新並安裝docker
[root@master ~]# vim /etc/docker/daemon.jsonn //配置docker 加速器{
"registry-mirrors": ["https://dxbdst4t.mirror.aliyuncs.com"]
}
[root@master ~]# systemctl daemon-reload
[root@master ~]# systemctl restart docker.service
[root@master ~]# echo "1" > /proc/sys/net/bridge/bridge-nf-call-iptables
[root@master ~]# echo "1" > /proc/sys/net/bridge/bridge-nf-call-ip6tables //開啓IP轉發
[root@master ~]# systemctl enable kubelet //設置開機自啓與啓動 kubelet,這裏不需要 start kubelet
[root@master ~]# echo "1" >> /proc/sys/net/bridge/bridge-nf-call-iptables
[root@master ~]# kubeadm init --apiserver-advertise-address=192.168.243.128 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --kubernetes-version=v1.17.4 --image-repository registry.aliyuncs.com/google_containers // 開始初始化集羣--注意這裏的192.168.243.128 需要替換爲自己的masterIP地址
得到以下結果初始化成功
以上圖片說明需要自己手動執行上訴命令:
[root@master ~]# mkdir -p $HOME/.kube
[root@master ~]# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@master ~]# chown $(id -u):$(id -g) $HOME/.kube/config
5.4 node1、node2 開始加入master
在 node1、node2 上分別執行:
[root@node1 ~]# kubeadm join 192.168.243.128:6443 --token p1sou2.sbgnthemnqcdf13e \<br/>--discovery-token-ca-cert-hash sha256:be4d40659699404f92d716ff013835a66689895ab81ee33da23e323a7ec7a21a
5.5 在master上部署 flannel 網絡插件
`[root@master docker]# kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
****這裏需要多等待一段時間,他會拉取鏡像,啓動pod****
[root@master ~]# kubectl get node //執行此命令,查看node的 狀態 都是ready 說明,網絡插件部署成功
NAME STATUS ROLES AGE VERSION
master Ready master 53m v1.17.4
node1 Ready <none> 28m v1.17.4
node2 Ready <none> 25m v1.17.4
`
k8s 搭建結束