日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

通过kubeadm安装kubernetes 1.7文档记录[docker容器方式]

發布時間:2023/12/2 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 通过kubeadm安装kubernetes 1.7文档记录[docker容器方式] 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

參照了網上N多文檔,不一一列表,共享精神永存!!!!

==================================================

獲取所有安裝包

安裝包分為兩類,rpm安裝包和docker鏡像

rpm安裝包

rpm為以下四個

kubeadm-1.7.0-0.x86_64.rpm
kubectl-1.7.0-0.x86_64.rpm
kubelet-1.7.0-0.x86_64.rpm
kubernetes-cni-0.5.1-0.x86_64.rpm

?

A, 從github上clone以下項目:

https://github.com/kubernetes/release

B,進入rpm目錄,執行docker-build.sh腳本,會在output目錄下生成那4個rpm安裝包。

????? *如果只生成amd-64的包,修改一下腳本,把其它幾個構架的去掉。

????? *這些安裝包的生成,需要fedora:24鏡像,最好提前準備。

核心docker鏡像

A, 下載kubernetes 1.7.0 release軟件包kubernetes-server-linux-amd64.tar.gz

https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG.md

B, 解壓kubernetes-server-linux-amd64.tar.gz文件,在server/bin目錄下,以下幾個文件為kubernetes的核心docker鏡像:

kube-apiserver.tar

kube-controller-manager.tar

kube-scheduler.tar

kube-proxy.tar

kube-aggregator.tar

將這些鏡像導入harbor倉庫便以后備用。

*因為k8s的官方鏡像都放在google上,不FQ一般不能直接下載,附錄會寫一個如何結合github,dockerhub,daocloud來獲取指定鏡像的辦法。

擴展docker鏡像

擴展的docker鏡像,涉及etcd,flannel,traefik,nginx,tomcat等,后面結合場景寫清楚。

所有節點初始化

主要是確認服務器的各項系統指標滿足安裝kubernetes的要求。

*RedHat發行版本為: 7.3 (Maipo)

*Linux內核版本為:3.10.0-514.el7.x86_64

docker安裝

這個安裝我們沒有涉及,原本已安裝好,版本為17.05.0-ce, build 89658be

注意新增/etc/systemd/system/docker.service.d/docker.conf文件:

[Service] ExecStart= ExecStart=/usr/bin/dockerd --graph=/dockerVolume --storage-driver=overlay --insecure-registry habor-ip-address


它改寫了docker的存儲目錄,且定義了harbor倉庫地址。

禁用selinux

確認/usr/sbin/sestatus命令輸出為:disabled

禁用ipv6

確認以下兩條命令均無顯示

lsmod | grep -i ipv6

ifconfig | grep -i inet6

開啟路由轉發

echo 1 > /proc/sys/net/ipv4/ip_forward

echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables

Iptables清空及禁用

iptables -Xiptables -Ziptables -P INPUT ACCEPTiptables -F

?

*默認禁用,通過硬防來控制規則。

主節點安裝

上傳rpm文件

將所有涉及的rpm包上傳到服務器的一個安裝目錄(e.g:/root/k8s/)

上傳docker鏡像

將前節提到的docker images上傳到harbor倉庫(harbor-ip-address)

運行初始化前腳本

生成并運行以下腳本,進行master初始化前安裝。(k8s-master-setup_before.sh)

?

#!/bin/bashHARBORPRE="1.2.3.4/kubernets/" DOCKERS=(${HARBORPRE}/gcr.io/google_containers/k8s-dns-sidecar-amd64:1.14.4 ${HARBORPRE}/gcr.io/google_containers/k8s-dns-kube-dns-amd64:1.14.4 ${HARBORPRE}/gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64:1.14.4 ${HARBORPRE}/gcr.io/google_containers/pause-amd64:3.0 ${HARBORPRE}/quay.io/coreos/flannel-amd64:v0.8.0${HARBORPRE}/gcr.io/google_containers/etcd-amd64:3.0.17 ${HARBORPRE}/gcr.io/google_containers/kube-proxy-amd64:v1.7.0 ${HARBORPRE}/gcr.io/google_containers/kube-apiserver-amd64:v1.7.0 ${HARBORPRE}/gcr.io/google_containers/kube-controller-manager-amd64:v1.7.0 ${HARBORPRE}/gcr.io/google_containers/kube-scheduler-amd64:v1.7.0 ${HARBORPRE}/gcr.io/google_containers/kubernetes-dashboard-amd64:v1.6.1 )#登陸harbor,拉取鏡像,更改名稱 docker login -u USER -p PASSWORD http://1.2.3.4 echo '====docker login====='for DOCKER in ${DOCKERS[@]}; dodocker pull ${DOCKER}docker tag ${DOCKER} ${DOCKER/${HARBORPRE}/}docker rmi ${DOCKER} doneecho '====docker pull image and change tag=====' #安裝rpm包 rpm -ivh ./*.rpm --nodeps --forceecho '====kubelet, kubeadm, kubectl install=====' # 有的腳本讀取執行文件路徑不一樣 \cp -f /usr/bin/kube* /usr/local/bin/echo '====cp exe file from /usr/bin to /usr/local/bin=====' #將docker文件驅動從systemd更改為cgroupfs,安裝不對,會報錯 sed -i 's/systemd/cgroupfs/g' /etc/systemd/system/kubelet.service.d/10-kubeadm.confecho '====change kubeadm file from systemd to cgroupfs====='systemctl daemon-reloadecho '====daemon-reload=====' #啟動kubelet服務 systemctl start kubelet.serviceecho '====start kubelet=====' #以防萬一,初始化kubeadm并清除以前安裝可能留下的痕跡 kubeadm resetifconfig cni0 down ip link delete cni0 ifconfig flannel.1 down ip link delete flannel.1 rm -rf /var/lib/cni/iptables -X iptables -Z iptables -P INPUT ACCEPT iptables -Fecho '====kubeadm reset=====' echo '====kube master setup finished====='

?

初始化kubernetes集群

kubeadm init --apiserver-advertise-address=k8s-master-ip-address --pod-network-cidr=10.244.0.0/16 --kubernetes-version=v1.7.0

?

*一定要指定version,k8s才不會去網上拉docker,指定pod的cidr,因為后面我們是用flannel作vxlan網絡支撐.

*一般等待1分鐘左右,初始化即可完成。如有問題,可及時查看/var/log/message進行排錯。

運行初始化后腳本

生成并運行以下腳本,進行master初始化后安裝。(k8s-master-setup_after.sh)

*以下幾個文件都是github里的標準文件

?

#!/bin/bashmkdir -p $HOME/.kube \cp -f /etc/kubernetes/admin.conf $HOME/.kube/config chown $(id -u):$(id -g) $HOME/.kube/configkubectl apply -f ./kube-flannel-rbac.yaml kubectl apply -f ./kube-flannel.yaml kubectl apply -f ./kube-dashboard-rbac.yaml kubectl apply -f ./kube-dashboard.yaml

?

確認安裝

運行kubectl get命令,確認所有pod及svc狀態正常.

kubectl get pods --all-namespaceskubectl get svc --all-namespaces

從節點安裝

上傳rpm文件

將所有涉及的rpm包上傳到服務器的一個安裝目錄(e.g:/root/k8s/)

運行從節點前置腳本

生成并運行以下腳本,進行從節點加入前安裝。(k8s-node-setup.sh)

#!/bin/bashHARBORPRE="1.2.3.4/kubernets/" DOCKERS=(${HARBORPRE}/gcr.io/google_containers/pause-amd64:3.0 ${HARBORPRE}/quay.io/coreos/flannel-amd64:v0.8.0${HARBORPRE}/gcr.io/google_containers/kube-proxy-amd64:v1.7.0 )#登陸harbor,拉取鏡像,更改名稱 docker login -u USER -p PASSWORD http://1.2.3.4 echo '====docker login====='for DOCKER in ${DOCKERS[@]}; dodocker pull ${DOCKER}docker tag ${DOCKER} ${DOCKER/${HARBORPRE}/}docker rmi ${DOCKER} doneecho '====docker pull image and change tag=====' #安裝rpm包 rpm -ivh ./*.rpm --nodeps --forceecho '====kubelet, kubeadm, kubectl install=====' # 有的腳本讀取執行文件路徑不一樣 \cp -f /usr/bin/kube* /usr/local/bin/echo '====cp exe file from /usr/bin to /usr/local/bin=====' #將docker文件驅動從systemd更改為cgroupfs,安裝不對,會報錯 sed -i 's/systemd/cgroupfs/g' /etc/systemd/system/kubelet.service.d/10-kubeadm.confecho '====change kubeadm file from systemd to cgroupfs====='systemctl daemon-reloadecho '====daemon-reload=====' #啟動kubelet服務 systemctl start kubelet.serviceecho '====start kubelet=====' #以防萬一,初始化kubeadm并清除以前安裝可能留下的痕跡 kubeadm resetifconfig cni0 down ip link delete cni0 ifconfig flannel.1 down ip link delete flannel.1 rm -rf /var/lib/cni/iptables -X iptables -Z iptables -P INPUT ACCEPT iptables -Fecho '====kubeadm reset=====' echo '====kube master setup finished====='

?

從節點加入

kubeadm join --token TOKEN MASTER-IP-ADDRESS:6443

?

*這個token可通過在主節點上運行kubeadm token list獲得

從節點加入確認

在主節點上運行kubectl get nodes(從節點上也可以運行,但要先獲取認證文件)

?

擴展功能安裝

基于traefik的ingress功能安裝

A, 下載traefik最新版本(略)

B, 寫traefik-ds.yaml配置文件

apiVersion: extensions/v1beta1 kind: DaemonSet metadata:name: traefik-ingress-lbnamespace: kube-systemlabels:k8s-app: traefik-ingress-lb spec:template:metadata:labels:k8s-app: traefik-ingress-lbname: traefik-ingress-lbspec:terminationGracePeriodSeconds: 60hostNetwork: truerestartPolicy: Alwayscontainers:- image: traefik:latestimagePullPolicy: IfNotPresentname: traefik-ingress-lbresources:limits:cpu: 200mmemory: 30Mirequests:cpu: 100mmemory: 20Miports:- name: httpcontainerPort: 80hostPort: 80- name: admincontainerPort: 8580args:- --web- --web.address=:8580- --kubernetes

?

C, 寫traefik-ing.yaml配置文件

apiVersion: extensions/v1beta1 kind: Ingress metadata:name: traefik-ingressnamespace: kube-system spec:rules:- host: cb.exmaple.comhttp:paths:- path: /backend:serviceName: tomcat-dmservicePort: 8087- host: cn.example.cnhttp:paths:- path: /backend:serviceName: nginx-dmservicePort: 8088

?

D, 應用這兩個配置文件

Kubectl apply –f traefik-ds.yamlKubectl apply –f traefik- ing.yaml

?

E,? 測試,訪問從節點8580端口。

?

附錄

如何曲線獲取google上的docker鏡像

*見本blog以前的帖子

Kubernetes大版本與各個組件版本的對應關系

?

Not end

轉載于:https://www.cnblogs.com/aguncn/p/7228792.html

總結

以上是生活随笔為你收集整理的通过kubeadm安装kubernetes 1.7文档记录[docker容器方式]的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。