01:k8s 安裝部署


k8s 官網詳解:
https://www.kubernetes.org.cn/k8s


准備環境:三台centos7 服務器
192.168.6.129 k8s-master(主)
192.168.6.130 k8s-node-1(節點)
192.168.6.131 k8s-node-2(節點)

#kubernetes(k8s)的安裝方法

五種方法:
kubernetes 二進制安裝 (配置最繁瑣,不亞於安裝openstack)
kubeadm 安裝 (谷歌推出的自動化安裝工具,網絡有要求)
minikube 安裝 (僅僅用來體驗k8s)
yum 安裝 (最簡單,版本比較低====學習推薦此種方法)
go編譯安裝 (最難)


我們采用yum安裝,學習怎么使用k8s才是重點。

1:修改主機和host 解析
#請在129-130-131三台機器都執行如下操作
vim /etc/hosts:
192.168.6.129 k8s-master
192.168.6.130 k8s-node-1
192.168.6.131 k8s-node-2

修改主機名:
hostnamectl set-hostname k8s-master
hostnamectl set-hostname k8s-node-1
hostnamectl set-hostname k8s-node-2

2: 安裝docker 1.12版本,系統自帶的1.13有點小bug,需要修改,不然后期容器網絡通訊會不通
[root@k8s-master ~]# yum provides docker
Loaded plugins: fastestmirror
Determining fastest mirrors
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
2:docker-1.13.1-102.git7f2769b.el7.centos.x86_64 : Automates deployment of
: containerized applicat
Repo : extras
2:docker-1.13.1-103.git7f2769b.el7.centos.x86_64 : Automates deployment of
: containerized applications
Repo : extras
[root@k8s-master ~]#

#去官網找1.12版本docker
http://vault.centos.org/7.4.1708/extras/x86_64/Packages/

#需要提前安裝 CentOS-Base.repo源
三台機器都需要下載這三個docker包:
http://vault.centos.org/7.4.1708/extras/x86_64/Packages/docker-1.12.6-71.git3e8e77d.el7.centos.x86_64.rpm
http://vault.centos.org/7.4.1708/extras/x86_64/Packages/docker-client-1.12.6-71.git3e8e77d.el7.centos.x86_64.rpm
http://vault.centos.org/7.4.1708/extras/x86_64/Packages/docker-common-1.12.6-71.git3e8e77d.el7.centos.x86_64.rpm

[root@k8s-master ~]# ls
docker-1.12.6-71.git3e8e77d.el7.centos.x86_64.rpm
docker-client-1.12.6-71.git3e8e77d.el7.centos.x86_64.rpm
docker-common-1.12.6-71.git3e8e77d.el7.centos.x86_64.rpm
[root@k8s-master ~]# scp * 192.168.6.130:~
root@192.168.6.130's password:
docker-1.12.6-71.git3e8e77d.el7.centos.x86_64.rpm 100% 15MB 30.7MB/s 00:00
docker-client-1.12.6-71.git3e8e77d.el7.centos.x86_64.rpm 100% 3451KB 29.6MB/s 00:00
docker-common-1.12.6-71.git3e8e77d.el7.centos.x86_64.rpm 100% 83KB 6.9MB/s 00:00
[root@k8s-master ~]# scp * 192.168.6.131:~
root@192.168.6.131's password:
docker-1.12.6-71.git3e8e77d.el7.centos.x86_64.rpm 100% 15MB 24.2MB/s 00:00
docker-client-1.12.6-71.git3e8e77d.el7.centos.x86_64.rpm 100% 3451KB 23.3MB/s 00:00
docker-common-1.12.6-71.git3e8e77d.el7.centos.x86_64.rpm 100% 83KB 5.8MB/s 00:00
[root@k8s-master ~]#

(1):卸載系統已經安裝的docker
由於筆者前面安裝有docker-ce版本,需要全部卸載干凈(推薦你使用全新的機器安裝)
[root@k8s-node-1 ~]# rpm -qa |grep docker
docker-ce-19.03.3-3.el7.x86_64
docker-ce-cli-19.03.3-3.el7.x86_64
[root@k8s-node-1 ~]# rpm -e docker-ce-19.03.3-3.el7.x86_64
[root@k8s-node-1 ~]# rpm -e docker-ce-cli-19.03.3-3.el7.x86_642
[root@k8s-node-1 ~]# rm -rf /var/lib/docker/* 清空之前docker產生的所有文件。
[root@k8s-node-1 ~]# rm -rf /etc/docker/*

3:在三台都安裝docker 1.12(必須要按如下順序安裝,不然可能會報錯)
yum localinstall docker-common-1.12.6-71.git3e8e77d.el7.centos.x86_64.rpm -y
yum localinstall docker-client-1.12.6-71.git3e8e77d.el7.centos.x86_64.rpm -y
yum localinstall docker-1.12.6-71.git3e8e77d.el7.centos.x86_64.rpm -y

4:驗證docker 是否安裝成功
[root@k8s-master ~]# docker -v
Docker version 1.12.6, build 3e8e77d/1.12.6

5:master節點安裝etcd (k8s數據庫kv類型存儲)原生支持做集群
[root@k8s-master ~]# yum install etcd.x86_64 -y
[root@k8s-master ~]# vim /etc/etcd/etcd.conf
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.6.129:2379"

啟動
[root@k8s-master ~]# systemctl start etcd.service
[root@k8s-master ~]# systemctl enable etcd.service

測試:
#set 設置一隊鍵值 數據存儲
[root@k8s-master ~]# etcdctl set testdir/testkey0 xujin
Xujin
#get獲取
[root@k8s-master ~]# etcdctl get testdir/testkey0
xujin
[root@k8s-master ~]#

#檢測集群狀態
[root@k8s-master ~]# etcdctl -C http://192.168.6.129:2379 cluster-health
member 8e9e05c52164694d is healthy: got healthy result from http://192.168.6.129:2379
cluster is healthy
[root@k8s-master ~]#

6:master節點安裝kubernetes
[root@k8s-master ~]# yum install kubernetes-master.x86_64 -y
#修改配置文件如下
[root@k8s-master ~]# vim /etc/kubernetes/apiserver
# The address on the local server to listen to.
KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"
# The port on the local server to listen on.
KUBE_API_PORT="--port=8080"
# Port minions listen on
KUBELET_PORT="--kubelet-port=10250"
# Comma separated list of nodes in the etcd cluster
KUBE_ETCD_SERVERS="--etcd-servers=http://192.168.6.129:2379"
# default admission control policies
KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,Securi
tyContextDeny,ResourceQuota"

#修改config文件
[root@k8s-master ~]# vim /etc/kubernetes/config
KUBE_MASTER="--master=http://192.168.6.129:8080"

啟動:k8s

# 啟動kube-apiserver
#這個服務用來:接受並響應用戶的請求
[root@k8s-master ~]# systemctl enable kube-apiserver.service
[root@k8s-master ~]# systemctl start kube-apiserver.service

#啟動 kube-controller-manager
#控制管理器的概念,保證容器存活
#每隔一段時間去掃描容器狀態,看有沒有死了。
#容器死了,會調度apiserver再起一個新的容器
#保證容器的個數,比如我們設定起三個nginx容器,多了就會殺掉,少了就會起
[root@k8s-master ~]# systemctl enable kube-controller-manager.service
[root@k8s-master ~]# systemctl start kube-controller-manager.service

#啟動kube-scheduler
#調度器,選擇啟動容器的node節點,通俗點就是容器在哪一個節點服務器上面創建
[root@k8s-master ~]# systemctl enable kube-scheduler.service
[root@k8s-master ~]# systemctl start kube-scheduler.service
到此主master 129 k8s安裝好了。

-----------------------------------------------------------------------

node節點安裝kubernetes

(130,131兩台服務器都執行如下命令)

yum install kubernetes-node.x86_64 -y

vim /etc/kubernetes/config
KUBE_MASTER="--master=http://192.168.6.129:8080"

vim /etc/kubernetes/kubelet
KUBELET_ADDRESS="--address=0.0.0.0"
# The port for the info server to serve on
KUBELET_PORT="--port=10250"
# You may leave this blank to use the actual hostname
KUBELET_HOSTNAME="--hostname-override=k8s-node-1" #注意131這里需要配置k8s-node-2
# location of the api-server
KUBELET_API_SERVER="--api-servers=http://192.168.6.129:8080"

#啟動kubelet服務
#調用docker,管理容器的生命周期
systemctl enable kubelet.service
systemctl start kubelet.service

#啟動kube-proxy
#提供容器網絡訪問
systemctl enable kube-proxy.service
systemctl start kube-proxy.service

檢測node集群是否正常:
主master(129)主機執行:
[root@k8s-master ~]# kubectl get nodes #出現如下節點,說明我們節點安裝正常
NAME STATUS AGE
k8s-node-1 Ready 6m
k8s-node-2 Ready 6m
[root@k8s-master ~]#

=================================
配置k8s服務器網絡:

K8s支持多種網絡類型,具體參考官網介紹或者百度。

我們這里選擇安裝flannel網絡。

1: 所有k8s服務器配置flannel網絡(129,130,131三台機器都執行如下操作)

[root@k8s-master ~]# yum install flannel -y
[root@k8s-master ~]# sed -i 's#http://127.0.0.1:2379#http://192.168.6.129:2379#g' /etc/sysconfig/flanneld
[root@k8s-master ~]# cat /etc/sysconfig/flanneld
# Flanneld configuration options
# etcd url location. Point this to the server where etcd runs
FLANNEL_ETCD_ENDPOINTS="http://192.168.6.129:2379"
# etcd config key. This is the configuration key that flannel queries
# For address range assignment
FLANNEL_ETCD_PREFIX="/atomic.io/network"
# Any additional options that you want to pass
#FLANNEL_OPTIONS=""
[root@k8s-master ~]#

之后再130,131 兩台節點也執行如上步驟就可以了。

2: master(129) 節點:創建網絡,並重啟服務
#mk 遞歸創建目錄config, 里面存的值是: '{ "Network": "172.16.0.0/16" }'
# key -------------------- value
#網絡16位,可以分配足夠多的IP地址給容器
[root@k8s-master ~]# etcdctl mk /atomic.io/network/config '{ "Network": "172.16.0.0/16" }'

#master(129)重啟服務
[root@k8s-master ~]#systemctl enable flanneld.service
[root@k8s-master ~]#systemctl restart flanneld.service
[root@k8s-master ~]#systemctl restart docker restart
[root@k8s-master ~]#systemctl restart kube-apiserver.service
[root@k8s-master ~]#systemctl restart kube-controller-manager.service
[root@k8s-master ~]#systemctl restart kube-scheduler.service

Node(130,131)節點:重啟服務
systemctl enable flanneld.service
systemctl restart flanneld.service
service docker restart
systemctl restart kubelet.service
systemctl restart kube-proxy.service

3:測試容器網絡
#三台都起一個容器,看ip a地址,然后互相ping,發現都是通的
[root@k8s-master ~]# docker run -it busybox
[root@k8s-node-1 ~]# docker run -it busybox
[root@k8s-node-2 ~]# docker run -it busybox
/ # ping baidu.com #首先看是否外網正常
PING baidu.com (39.156.69.79): 56 data bytes
64 bytes from 39.156.69.79: seq=0 ttl=127 time=30.514 ms
/ # ip a #查看各自的自動生成的IP,互相ping會發現也是通的。

到此網絡也配置正常,基礎的k8s搭建完畢!

=====================================================

 

如果網絡不通可能是防火牆的問題,要么直接關閉防火牆,或者配置一條規則
#k8s三台服務器都執行
[root@k8s-master ~]#iptables -P FORWARD ACCEPT
[root@k8s-node-1 ~]#iptables -P FORWARD ACCEPT
[root@k8s-node-2 ~]#iptables -P FORWARD ACCEPT

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM