部署環境:
以下實驗都是在VM虛擬機中進行部署的,僅供個人學習測試,不建議直接上生產環境.
PS:其中,master的CPU核數至少需要2核,還沒有測試過1G內存是否可以正常安裝
節點 | 系統 | CPU核數 | 內存 | 磁盤 | IP |
k8s-master | Centos7.7minimal | 2核 | 2G | 20G | 192.168.2.130 |
k8s-node01 | Centos7.7minimal | 1核 | 1G | 20G | 192.168.2.134 |
k8s-node02 | Centos7.7minimal | 1核 | 1G | 20G | 192.168.2.135 |
部署步驟:
三個節點分別執行以下命令
192.168.2.130執行該命令
hostnamectl set-hostname k8s-master
192.168.2.134執行該命令
hostnamectl set-hostname k8s-node01
192.168.2.135執行該命令
hostnamectl set-hostname k8s-node02
三個節點全部執行以下命令
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
swapoff -a #關閉swap交換分區
sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab #禁止swap交換分區開機自啟
#配置hosts文件
cat >> /etc/hosts << EOF
192.168.2.130 k8s-master
192.168.2.134 k8s-node01
192.168.2.135 k8s-node02
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 -y ntpdate #安裝ntpdate用於校准時間,確保master和node時間同步
ntpdate time.windows.com #校准時間
yum install wget -y
#如果以下安裝docker的方式失敗,可以參考我的博客https://www.cnblogs.com/biaopei/p/11937292.html
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
yum -y install docker-ce-18.06.1.ce-3.el7
#以下命令用來配置鏡像地址..
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
systemctl enable docker
systemctl start docker
#因為默認k8s鏡像倉庫需要翻出去,所以配置國內鏡像地址
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
yum install -y kubelet-1.15.0 kubeadm-1.15.0 kubectl-1.15.0
systemctl enable kubelet
以下操作只需要在master中執行
#記得將192.168.2.130修改為master的ip地址,其余不變.需要等待幾分鍾才可執行完成.會提示[WARNING IsDockerSystemdCheck]: detected "cgroupfs" as the Docker cgroup driver.只是警告可忽略.(如果master的cpu核數只有1核,這里還會提示cpu核數達不到要求的2核)
kubeadm init \
--apiserver-advertise-address=192.168.2.130 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.15.0 \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16
#執行完上一條語句后,會有類似如下命令的提示,根據提示執行即可.還有一條kubeadm join 192.168.2.130:6443 --token,這個是用來在node上執行,加入到k8s集群中的,我們稍后需要用到
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
以下操作在兩個node中執行
#不要直接復制這里的,是kubeadm init執行完成后,后面提示的那條語句.就是我們剛才說的那個
kubeadm join 192.168.2.130:6443 --token c1qboh.pg159xmk61z5rbeg \
--discovery-token-ca-cert-hash sha256:ff09b3a7b0989de094b73e811bf378d8ab1cf3c1e413e3753ebd5de826075931
以下操作在master執行
#配置flannel網絡
wget https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml
vi kube-flannel.yml
#修改以下行對應內容,注意不能使用tab鍵,只能使用空格進行對啟,注意格式要按照原來的,不能多一個空格,也不能少一個空格
106 image: lizhenliang/flannel:v0.11.0-amd64 120 image: lizhenliang/flannel:v0.11.0-amd64
kubectl apply -f kube-flannel.yml
ps -ef|grep flannel|grep -v grep #可能需要10分鍾左右啟動初始化完成,才有返回結果.然后再執行下一步
kubectl get nodes #可能需要等待十幾分鍾,狀態才能全部轉為ready.然后再執行下一步
kubectl get pod -n kube-system #可能需要等待十幾分鍾,直至所有狀態才能全部轉為ready 1/1.然后再執行下一步
kubectl create deployment nginx --image=nginx #創建nginx服務
kubectl expose deployment nginx --port=80 --type=NodePort #暴露nginx服務80端口
kubectl get pods,svc #查看運行中的服務80:31214/TCP.我們從宿主機訪問masterip:31214即可訪問到nginx服務.但是也需要等待幾分鍾,直到該端口可以telnet通..然后再執行下一步
訪問nginx,效果:
#配置k8s UI界面
wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
vi kubernetes-dashboard.yaml
#修改以下行對應內容,注意不能使用tab鍵,只能使用空格進行對啟,注意格式要按照原來的,不能多一個空格,也不能少一個空格
...... 111 - name: kubernetes-dashboard 112 image: lizhenliang/kubernetes-dashboard-amd64:v1.10.1 # 替換此行 ...... 157 spec: 158 type: NodePort # 增加此行 159 ports: 160 - port: 443 161 targetPort: 8443 162 nodePort: 30001 # 增加此行 163 selector: 164 k8s-app: kubernetes-dashboard
kubectl apply -f kubernetes-dashboard.yaml #現在我們可以訪問https://192.168.2.130:30001.當然也需要等一會.注意是https
訪問K8S UI界面,效果:
會提示鏈接不安全,點擊高級->接受風險並繼續即可
kubectl create serviceaccount dashboard-admin -n kube-system #創建管理員帳號
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin #配置管理員帳號為集群管理員帳號?
#執行以下命令后,會生成對應的token,在https://192.168.2.130:30001中選擇token,輸入該token即可登陸k8s管理后台
kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')
輸入Token,登陸K8S UI界面,效果:
最終效果
K8S部署完成.
本文參考自:
https://cloud.tencent.com/developer/article/1509412
一次成功,感謝原文作者的分享!