k8s第二回之k8s集群的安裝


1. k8s集群的安裝


Kubernetes借鑒了Borg的設計理念,比如Pod、Service、Labels和單Pod單IP等。Kubernetes的整體架構跟Borg非常像,如下圖所示:

1、架構:

除了核心組件,還有一些推薦的Add-ons:

組件名稱 說明
kube-dns 負責為整個集群提供DNS服務
Ingress Controller 為服務提供外網入口
Heapster 提供資源監控
Dashboard 提供GUI
Federation 提供跨可用區的集群
Fluentd-elasticsearch 提供集群日志采集、存儲與查詢

2、環境准備

3台主機,IP地址、主機名的host解析分別如下(最好再做一下SSH免秘鑰的登錄,實驗環境方便操作!)

10.0.0.11  k8s-master
10.0.0.12  k8s-node-1
10.0.0.13  k8s-node-2

3、master節點安裝etcd

1. 安裝 etcd
yum install etcd -y

2. 編輯配置文件
6行:ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
21行:ETCD_ADVERTISE_CLIENT_URLS="http://10.0.0.11:2379"

3. 啟動並自啟服務
systemctl start etcd.service
systemctl enable etcd.service

----------------------------------------------------------
etcdctl set testdir/testkey0 0
etcdctl get testdir/testkey0

etcdctl -C http://10.0.0.11:2379 cluster-health

注: etcd原生支持做集群,etcd服務可以安裝在其他服務器做成etcd集群,通過kubernets連接

4、 master節點安裝kubernetes

1. 安裝kubernetes
yum install kubernetes-master.x86_64 -y

2. 編輯配置
vim /etc/kubernetes/apiserver 
8行:  KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"
11行:KUBE_API_PORT="--port=8080"
14行: KUBELET_PORT="--kubelet-port=10250"
17行:KUBE_ETCD_SERVERS="--etcd-servers=http://10.0.0.11:2379"
23行:KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota"

vim /etc/kubernetes/config
22行:KUBE_MASTER="--master=http://10.0.0.11:8080"

3. 重啟並自啟k8s
systemctl enable kube-apiserver.service
systemctl restart kube-apiserver.service
systemctl enable kube-controller-manager.service
systemctl restart kube-controller-manager.service
systemctl enable kube-scheduler.service
systemctl restart kube-scheduler.service

檢查服務是否安裝正常

[root@k8s-master ~]# kubectl get componentstatus 
NAME                 STATUS    MESSAGE             ERROR
scheduler            Healthy   ok                  
controller-manager   Healthy   ok                  
etcd-0               Healthy   {"health":"true"} 

5、node節點安裝kubernetes

#1. 安裝kubernetes-node
yum install kubernetes-node.x86_64 -y

#2. 編輯配置
vim /etc/kubernetes/config 
22行:KUBE_MASTER="--master=http://10.0.0.11:8080"

vim /etc/kubernetes/kubelet
5行:KUBELET_ADDRESS="--address=0.0.0.0"
8行:KUBELET_PORT="--port=10250"
11行:KUBELET_HOSTNAME="--hostname-override=10.0.0.12"
14行:KUBELET_API_SERVER="--api-servers=http://10.0.0.11:8080"

#3. 啟動並自啟服務
systemctl enable kubelet.service
systemctl restart kubelet.service
systemctl enable kube-proxy.service
systemctl restart kube-proxy.service
systemctl enable docker

在master節點檢查驗證:

[root@k8s-master  /etc/kubernetes ]#: kubectl get nodes
NAME        STATUS    AGE
10.0.0.12   Ready     2m
10.0.0.13   Ready     5s

6、所有節點配置flannel網絡

flannel和overlay網絡類似需要數據庫,flannel需要etcd數據庫

yum install flannel -y
sed -i 's#http://127.0.0.1:2379#http://10.0.0.11:2379#g' /etc/sysconfig/flanneld

##master節點:
etcdctl mk /atomic.io/network/config   '{ "Network": "172.18.0.0/16","Backend": {"Type": "vxlan"} }'

#所有節點執行
systemctl enable flanneld.service 
systemctl restart flanneld.service 

##node節點:
systemctl enable flanneld.service 
systemctl restart flanneld.service 
systemctl  restart  docker
systemctl restart kubelet.service
systemctl restart kube-proxy.service

vim /usr/lib/systemd/system/docker.service
#在[Service]區域下增加一行
ExecStartPost=/usr/sbin/iptables -P FORWARD ACCEPT
systemctl daemon-reload 
systemctl restart docker
systemd中有這樣功能的配置:
1) ExexStart 
2) ExexStartPost 

最后在master節點驗證結果如下:

7、配置master為鏡像倉庫

#所有節點執行
##1. 配置鏡像加速
vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://registry.docker-cn.com"],
"insecure-registries": ["10.0.0.11:5000"]
}

##2. 重載docker
systemctl restart docker

#master節點
yum install docker -y
systemctl enable docker
systemctl start docker
docker run -d -p 5000:5000 --restart=always --name registry -v /opt/myregistry:/var/lib/registry  registry


免責聲明!

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



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