這篇文章主要講解了“Kubernetes搭建部署K8S1.13的詳細(xì)過(guò)程”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“Kubernetes搭建部署K8S1.13的詳細(xì)過(guò)程”吧!
成都創(chuàng)新互聯(lián)公司云計(jì)算的互聯(lián)網(wǎng)服務(wù)提供商,擁有超過(guò)13年的服務(wù)器租用、成都棕樹機(jī)房、云服務(wù)器、網(wǎng)頁(yè)空間、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗(yàn),已先后獲得國(guó)家工業(yè)和信息化部頒發(fā)的互聯(lián)網(wǎng)數(shù)據(jù)中心業(yè)務(wù)許可證。專業(yè)提供云主機(jī)、網(wǎng)頁(yè)空間、主機(jī)域名、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。
首先我準(zhǔn)備了3臺(tái)CentOS 7 x64的虛擬機(jī),分別對(duì)應(yīng)的角色和IP地址如下:
KS8 10.20.30.63 master
Dcoker01 10.20.30.64 node01
Docker02 10.20.30.55 node02
每一臺(tái)為了實(shí)驗(yàn)的順利,我都關(guān)閉了防火墻和SELinux
Systemctl stop firewalld
Systemctl disable firewalld
Vi /etc/SELinux/config
并且安裝了vim
yum install -y vim
以及關(guān)閉所有服務(wù)器的swap分區(qū):
vim /etc/fstab
把swap這行刪除掉后保存
重啟虛擬機(jī)reboot
接下來(lái)需要對(duì)每一臺(tái)添加Host記錄,實(shí)現(xiàn)主機(jī)和IP對(duì)應(yīng)關(guān)系,如果您有DNS解析,這一步可以忽略
vim /etc/hosts
接下來(lái)為每一臺(tái)開啟網(wǎng)絡(luò)轉(zhuǎn)發(fā)功能
vim /etc/sysctl.conf #插入以下內(nèi)容
net.ipv4.ip_forward = 1
sysctl -p #生效
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
使配置生效
sysctl --system
接下來(lái)再所有服務(wù)器上安裝Docker,Kubeadm,kubelet
第一個(gè)先裝docker
yum install -y docker
systemctl start docker
systemctl enable docker
第二個(gè)安裝kubeadm,kubelet,kybectl
先更新下yum源
yum update -y
設(shè)置kubernetes YUM倉(cāng)庫(kù)
https://mirrors.aliyun.com/kubernetes/yum/repos/
vim /etc/yum.repos.d/kubernetes.repo
編輯內(nèi)容如下:
[kubernetes]
name = Kubernetes
baseurl = https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled = 1
gpgcheck = 1
repo_gpgcheck = 1
gpgkey = https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
查看kubernetes可以安裝的版本清單
yum list --showduplicates | grep 'kubeadm\|kubectl\|kubelet'
在這里安裝1.13.3
yum install -y kubelet-1.13.3 kubeadm-1.13.3 kubectl-1.13.3 kubernetes-cni-0.6.0-0
所有服務(wù)器只設(shè)置kubelet開機(jī)啟動(dòng)
systemctl enable kubelet
接下來(lái)初始化Kubernetes Master(只在K8S服務(wù)器上執(zhí)行)
kubeadm init \
--apiserver-advertise-address=10.20.30.63 \ #master監(jiān)聽的IP地址
--image-repository registry.aliyuncs.com/google_containers \ #指定一個(gè)倉(cāng)庫(kù)
--kubernetes-version v1.13.3 \ #指定版本
--service-cidr=10.30.0.0/16 \ #指定service網(wǎng)絡(luò)IP地址段,負(fù)載均衡的虛擬IP
--pod-network-cidr=10.244.0.0/16 #指定pod網(wǎng)絡(luò),容器用到的IP地址,這個(gè)需要和后面用到的yml匹配一致,如下圖
++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++
完成后注意執(zhí)行結(jié)果的這段kubeadm join,這是其他節(jié)點(diǎn)加入需要的Token
kubeadm join 10.20.30.63:6443 --token mf9dfj.0zaovbosaselcsmq --discovery-token-ca-cert-hash sha256:e06a5190af0a754bed99053eeaac1f419c426b3b9c41d28c187baf08f6ebc19e
生成的證書保存在
然后配置 kubectl
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
可以先看看下載下來(lái)的鏡像kube-apiserver,kue-controller-manager,kube-proxy,kube-scheduler都是1.13.3版本
Docker images
接下來(lái)安裝Pod網(wǎng)絡(luò)插件
++++++++++++++++++++++++
建議先執(zhí)行這部避免出現(xiàn)下面的問(wèn)題
docker pull quay.io/coreos/flannel:v0.11.0-amd64
+++++++++++++++++++++++
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml
再檢查下kubectl get pods -n kube-system
再檢查下節(jié)點(diǎn)狀態(tài)
kubectl get node
再檢查下命名空間
kubectl get pods --all-namespaces或kubectl get pods --all-namespaces -o wide
接下來(lái)就是將Node節(jié)點(diǎn)加入到集群中
利用上面的這段在每一臺(tái)node去執(zhí)行(Docker01和Docker02)
kubeadm join 10.20.30.63:6443 --token mf9dfj.0zaovbosaselcsmq --discovery-token-ca-cert-hash sha256:e06a5190af0a754bed99053eeaac1f419c426b3b9c41d28c187baf08f6ebc19e
加入成功后可以在K8S(master)看到新Node加入
但需要多等下讓他們2個(gè)節(jié)點(diǎn)準(zhǔn)備好
其實(shí)在等待節(jié)點(diǎn)準(zhǔn)備好的期間也就是節(jié)點(diǎn)也在拉取docker pull quay.io/coreos/flannel:v0.11.0-amd64
接下來(lái)測(cè)試下集群,創(chuàng)建一個(gè)Nginx的image
kubectl create deployment nginx --image=nginx
可以看到也是在拉取nginx的image到運(yùn)行起來(lái)
接下來(lái)發(fā)布這個(gè)Nginx可以讓外部訪問(wèn)
kubectl expose deployment nginx --port=80 --type=NodePort
可以通過(guò)kubectl get pods,svc -o wide查看更為詳細(xì)的信息
通過(guò)訪問(wèn)任意一個(gè)Node都是可以打開http://10.20.30.6x:32109訪問(wèn)到
最后部署一個(gè)Dashboard實(shí)現(xiàn)儀表板的功能來(lái)監(jiān)控K8S的運(yùn)維
在K8S上線下載https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml文件
yum install -y wget
wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
vim kubernetes-dashboard.yaml
把框柱的部分由我們無(wú)法訪問(wèn)的Google源改成阿里的源
改成如下:
registry.aliyuncs.com/google_containers/kubernetes-dashboard-amd64:v1.10.1
接下來(lái)再修改Service部分
保存退出
然后應(yīng)用kubectl apply -f kubernetes-dashboard.yaml
查看運(yùn)行狀態(tài)
kubectl get pods -n kube-system
查看訪問(wèn)端口kubectl get pods,svc -n kube-system
在外部通過(guò)https訪問(wèn)
在這里使用令牌登錄,因此需要先創(chuàng)建SA并綁定默認(rèn)cluster-admins管理員集群角色,在K8S執(zhí)行
kubectl create serviceaccount dashboard-admin -n kube-system
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')
創(chuàng)建一個(gè)服務(wù)賬戶dashboard-admin隸屬于K8S的最高權(quán)限cluster-admin組
創(chuàng)建的dashboard-admin賬戶在kubectl get secret -n kube-system下可用查看到
以后查看這個(gè)賬戶的令牌token也可以執(zhí)行kubectl describe secret dashboard-admin-token-6j4ln -n kube-system再次獲取
復(fù)制Token到令牌進(jìn)行登錄
登錄成功,看到儀表板
到這里,搭建部署K8S就告一個(gè)段落了。
感謝各位的閱讀,以上就是“Kubernetes搭建部署K8S1.13的詳細(xì)過(guò)程”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)Kubernetes搭建部署K8S1.13的詳細(xì)過(guò)程這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!