基於kubeamd方式部署K8s解決方案
Master:192.168.0.26 node1:192.168.0.191 node2:192.168.0.94
一、初始化操作
1、首先關閉三台服務器的防火牆
systemctl stop firewalld #永久關閉
systemctl disable firewalld #永久關閉
永久關閉selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config
關閉swap分區
swapoff -a #臨時
sed -ri 's/.*swap.*/#&/' /etc/fstab #永久關閉
2、給三台主機添加主機名稱方便管理
hostnamectl set-hostname ecs-K8s-master
hostnamectl set-hostname ecs-K8s-node1
hostnamectl set-hostname ecs-K8s-node2
在master服務器添加hosts,其他不用添加
/etc/hosts配置文件中加入你的ip及修改的名字
192.168.0.26 ecs-K8s-master
192.168.0.191 ecs-K8s-node1
192.168.0.94 ecs-K8s-node2
3、將橋接的IPV4流量傳遞到iptanles的鏈
/etc/sysctl.d/k8s.conf 三台服務器的配置文件加入下面兩行。
net.bridge.bridge-nf-call-ip6tables=1
net.bridge.bridge-nf-call-iptables=1
執行如下立即生效
sysctl --system
4、三台服務器同步時間
yum -y install ntpdate -y
ntpdate time.windows.com
二、所有節點的准備工作
1、所有節點安裝docker
wget -i http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
cp docker-ce.repo /etc/yum.repos.d/
安裝所需軟件包
yum install -y yum-utils
yum -y install device-mapper-persistent-data
yum -y install lvm2
查看各版本docker
yum list docker-ce --showduplicates | sort -r
安裝dockers
yum install docker-ce-18.06.1.ce-3.el7
配置開機自啟動
systemctl enable docker
查看是否自啟動(enabled)
systemctl list-unit-files | grep docker
啟動dockers
systemctl start docker
2、Docker中的倉庫配置(所有節點)
cat > /etc/docker/daemon.json << EOF
{
"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]
}
EOF
配置完成需要重啟docker
systemctl restart docker
3、添加阿里雲yum軟件源(所有節點執行)
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
4、部署kubeadm,kubelet和kubectl(所有節點執行)
由於版本更新頻繁,這里指定版本號部署
rpm --rebuilddb
yum update
yum clean all
yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0
檢查是否安裝
rpm -qa | grep kubelet
rpm -qa | grep kubeadm
rpm -qa | grep kubectl
rpm -qa | grep kubernetes-cni
啟動kubelet,並設置開機啟動
systemctl enable kubelet && systemctl start kubelet
5、初始化master(在master上面執行)
###apiserver-advertise-address指定master的ip地址
###pod-network-cidr指定Pod網絡的范圍,這里使用flannel網絡方案
kubeadm init --kubernetes-version=1.18.0 --apiserver-advertise-address=192.168.0.26 --image-repository registry.aliyuncs.com/google_containers --service-cidr=10.1.0.0/16 --pod-network-cidr=10.244.0.0/16
完成后結果如下,不過有兩部分需要在master,與node上面執行。
在mster執行如下
6、加入kubernetes node
執行完成可以使用kubectl get nodes 查看當前節點信息。已經有我們master的節點信息了。
在所有node節點執行上圖的命令,將node節點加入。
Node1執行
Node2執行
在master節點執行kubectl get nodes,查看是否兩個節點加入。
7、部署CNI網絡插件(在master執行)
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubectl get pods -n kube-system
查看是否執行完成已經運行
上面的狀態全部為1/1時,使用kubectl get nodes,查看是否是已經就緒
集群已經搭建完成。
8、測試kubernetes集群
在kubernetes集群中創建一個pod,驗證是否正常運行。
kubectl create deployment nginx --image=nginx 拉取一個nginx
kubectl get pod 查看是否拉取完成。Running已經拉取完成
當狀態是running時執行對外進行端口暴露。
kubectl expose deployment nginx --port=80 --type=NodePort
kubectl get pod,svc 查看對外的端口
這邊實驗是通過華為雲服務器測試,需要在雲平台的安全組開放這個端口,不然無法訪問,如果是虛擬機的話就直接訪問就行。
測試訪問master的ip加上31667測試可以訪問。
測試node1節點的ip加上31667測試也是可以訪問。
k8s集群搭建完成