1. 安裝三臺CentOS7的虛擬機
每臺虛擬機cpu核數(shù)最少為2,內(nèi)存最少2g算色,磁盤30g抱怔。
2. 虛擬機初始化配置
# 永久關(guān)閉防火墻
systemctl disable firewalld
# 永久關(guān)閉selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config
# 永久關(guān)閉swap
sed -ri 's/.*swap.*/#&/' /etc/fstab
# 根據(jù)規(guī)劃設(shè)置主機名
hostnamectl set-hostname <hostname>
# 在master中添加hosts
cat >> /etc/hosts << EOF
<master's ip> (space) <master's name>
<node1's ip> <node1's name>
<node2's ip> <node2's name>
EOF
# 將橋接的IPv4流量傳遞到iptables的鏈
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system # 生效
# 時間同步
yum install ntpdate -y # -y:安裝過程中所有決策都選yes
ntpdate time.windows.com
3. 在三個節(jié)點中安裝docker忍饰,kubelet,kubeam缓待,kubectl
3.1 安裝docker
yum install docker
systemctl enable docker && systemctl start docker
# 配置docker下載源
cat > /etc/docker/daemon.json << EOF
{
"registry-mirrors":["(阿里云鏡像url)"]
}
EOF
3.2 添加阿里云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
3.3 安裝kubeadm,kubelet,kubectl
yum install -y kubelet kubeadm kubectl
systemctl enable kubelet # 開機啟動kubelet
4. 部署Kubernetes Master(只在Master節(jié)點上執(zhí)行)
kubeadm init \
--apiserver-advertise-address=<master's ip> \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version <downloaded kubernetes's version> \
--service-cidr=<a casual ip> \
--pod-network-cidr=<a casual ip>
# 執(zhí)行這行代碼需要下載鏡像锦秒,會花一些時間。
# 下載完成后會有一長串提示信息喉镰,根據(jù)提示信息中的步驟進行旅择。
5. 將node節(jié)點加入到集群中
# 在node節(jié)點的命令行中運行上一步結(jié)果中kubeadm join后面的一長串
加入后,在master中查看集群:
kubectl get nodes
此時查看侣姆,所有node應該都是unready狀態(tài)生真,需要部署cni網(wǎng)絡(luò)插件才會啟動。
注意捺宗,默認token有效期為24小時柱蟀,過期后需要重新創(chuàng)建token:
kubeadm token create --print-join-command
6. 部署CNI網(wǎng)絡(luò)插件
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubectl get pods -n kube-system
7. 測試Kubernetes集群
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
kubectl get pod,svc
部署完nginx后,應該可以通過master和node中任意節(jié)點的IP地址+80端口號訪問nginx蚜厉。