一.K8S 概覽
1.K8S是什么
K8S官網(wǎng)文檔:https://kubernetes.io/zh/docs/home/
K8S 是Kubernetes的全稱,源于希臘語,意為“舵手”或“飛行員”,官方稱其是:用于自動(dòng)部署、擴(kuò)展和管
理“容器化(containerized)應(yīng)用程序”的開源系統(tǒng)。翻譯成大白話就是:“K8S 是負(fù)責(zé)自動(dòng)化運(yùn)維管理多個(gè)Docker 程序的集群”。
2.K8S核心特性
- 1.服務(wù)發(fā)現(xiàn)與負(fù)載均衡:無需修改你的應(yīng)用程序即可使用陌生的服務(wù)發(fā)現(xiàn)機(jī)制。
- 2.存儲(chǔ)編排:自動(dòng)掛載所選存儲(chǔ)系統(tǒng),包括本地存儲(chǔ)。
- 3.Secret和配置管理:部署更新Secrets和應(yīng)用程序的配置時(shí)不必重新構(gòu)建容器鏡像,且不必將軟件堆棧配置中的秘密信息暴露出來。
- 4.批量執(zhí)行:除了服務(wù)之外,Kubernetes還可以管理你的批處理和CI工作負(fù)載,在期望時(shí)替換掉失效的容器。
- 5.水平擴(kuò)縮:使用一個(gè)簡單的命令、一個(gè)UI或基于CPU使用情況自動(dòng)對應(yīng)用程序進(jìn)行擴(kuò)縮。
- 6.自動(dòng)化上線和回滾:Kubernetes會(huì)分步驟地將針對應(yīng)用或其配置的更改上線,同時(shí)監(jiān)視應(yīng)用程序運(yùn)行狀況以確保你不會(huì)同時(shí)終止所有實(shí)例。
- 7.自動(dòng)裝箱:根據(jù)資源需求和其他約束自動(dòng)放置容器,同時(shí)避免影響可用性。
- 8.自我修復(fù):重新啟動(dòng)失敗的容器,在節(jié)點(diǎn)死亡時(shí)替換并重新調(diào)度容器,殺死不響應(yīng)用戶定義的健康檢查的容器。
3.k8s集群的搭建
搭建K8S集群,準(zhǔn)備三臺2核4G的虛擬機(jī)(內(nèi)存至少2G以上),操作系統(tǒng)選擇用centos 7以上版本,先在三臺機(jī)器上裝好docker
docker的安裝參考 : 服務(wù)搭建篇(十一) 容器引擎Docker的部署及介紹
最好保持版本的一致 , 在三臺機(jī)器都執(zhí)行如下命令
3.1 關(guān)閉防火墻
systemctl stop firewalld
systemctl disable firewalld
3.2 關(guān)閉selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config # 永久關(guān)閉
setenforce 0 # 臨時(shí)關(guān)閉
3.3 關(guān)閉swap
swapoff -a # 臨時(shí)關(guān)閉
vim /etc/fstab # 永久關(guān)閉
#注釋掉swap這行 如下圖
systemctl reboot # 重啟生效
free -m # 查看下swap交換區(qū)是否都為0,如果都為0則swap關(guān)閉成功
3.4 設(shè)置hostname
hostnamectl set-hostname <hostname>
我的設(shè)置如下
第一臺 : k8s-master-141
第二臺 : k8s-node-142
第三臺 : k8s-node-143
3.5 在 k8s-master機(jī)器添加hosts,執(zhí)行如下命令,ip需要修改成你自己機(jī)器的ip
cat >> /etc/hosts << EOF
192.168.154.141 k8s-master-141
192.168.154.142 k8s-node-142
192.168.154.143 k8s-node-143
EOF
3.6 將橋接的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 #重啟生效
3.7 設(shè)置時(shí)間同步
yum install ntpdate -y
ntpdate time.windows.com
3.8 添加k8s 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.9 如果之前安裝過k8s,先卸載舊版本
yum remove -y kubelet kubeadm kubectl
3.10 查看可以安裝的版本
yum list kubelet --showduplicates | sort -r
3.11 安裝kubelet、kubeadm、kubectl 指定版本,我們使用kubeadm方式安裝k8s集群
yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0
3.12 開機(jī)啟動(dòng)kubelet
systemctl enable kubelet
systemctl start kubelet
systemctl status kubelet
3.13 初始化
在k8s-master機(jī)器上執(zhí)行初始化操作(里面的第一個(gè)ip地址就是k8s-master機(jī)器的ip,改成你自己機(jī)器的,后面兩個(gè)ip網(wǎng)段不用動(dòng))
kubeadm init --apiserver-advertise-address=192.168.154.141 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.18.0 --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16
在k8s-master機(jī)器上執(zhí)行如下命令:
#配置使用 kubectl 命令工具(類似docker這個(gè)命令),執(zhí)行上圖第二個(gè)紅框里的命令
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
查看kubectl是否能正常使用
kubectl get nodes
安裝 Pod 網(wǎng)絡(luò)插件
# 下載flannel插件的yml
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
# 修改kube-flannel.yml中的鏡像倉庫地址為國內(nèi)源
sed -i 's/quay.io/quay-mirror.qiniu.com/g' kube-flannel.yml
# 安裝網(wǎng)絡(luò)插件
kubectl apply -f kube-flannel.yml
在所有k8s node機(jī)器執(zhí)行上圖第三個(gè)紅框里的命令
將node節(jié)點(diǎn)加入進(jìn)master節(jié)點(diǎn)的集群里,復(fù)制上圖第三個(gè)紅框里的命令執(zhí)行(執(zhí)行自己的命令)
kubeadm join 192.168.154.141:6443 --token 3ya97r.noygcitjsdcmksmk --discovery-token-ca-cert-hash sha256:8610a89ef85433a89216141106b389763fa70b26f2653b08e99af296c489e284
3.14 在k8s-master機(jī)器執(zhí)行查看節(jié)點(diǎn)命令
kubectl get nodes
補(bǔ)充:如果node節(jié)點(diǎn)添加進(jìn)集群失敗,可以刪除節(jié)點(diǎn)重新添加
要?jiǎng)h除 k8s-node-142 這個(gè)節(jié)點(diǎn),首先在 master 節(jié)點(diǎn)上依次執(zhí)行以下兩個(gè)命令
kubectl drain k8s-node-142 --delete-local-data --force --ignore-daemonsets
kubectl delete node k8s-node-142
執(zhí)行后通過 kubectl get node 命令可以看到 k8s-node-142 已被成功刪除
接著在k8s-node-142 這個(gè) Node 節(jié)點(diǎn)上執(zhí)行如下命令,這樣該節(jié)點(diǎn)即完全從 k8s 集群中脫離開來
之后就可以重新執(zhí)行命令添加到集群文章來源:http://www.zghlxwxcb.cn/news/detail-424444.html
kubeadm reset
4.k8s部署過程踩坑記錄
1.error: no configuration has been provided, try setting KUBERNETES_MASTER environment variable
2.k8s集群狀態(tài)全部為NotReady文章來源地址http://www.zghlxwxcb.cn/news/detail-424444.html
到了這里,關(guān)于服務(wù)搭建篇(十二) Kubernetes集群的安裝及部署的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!