使用 kubeadm 安裝部署 kubernetes 1.9
kubeadm是官方提供的安裝方案,比純手工安裝方便。
零 準備
在安裝前需做些設定讓系統環境一致,確保後面順利安裝。
0.0 硬體情況
系統:centos 7
使用者: root
機器規劃:
角色 | 數量 | 配置 | 物理ip | hostname |
---|---|---|---|---|
master | 1 | 4核 16G | 172.16.93.220 | k8s |
node | 1 | 4核 16G | 172.16.89.34 | cs-k8s-34 |
node | 1 | 4核 16G | 172.16.89.35 | cs-k8s-35 |
硬體配置參考:CPU 2核或以上,記憶體2GB或以上。
機器最好都在同一個區域網,在三臺機器上都設定好hostname
0.1 配置代理
echo "proxy=http://127.0.0.1:8118" >> /etc/yum.conf
這裡注意下,終端不需要使用代理,配置完啟動Privoxy即可。
0.2 系統設定
0.2.1 關閉防火牆吧,省事點,如果處於安全考慮,注意後面要開放埠。
systemctl stop firewalld
systemctl disable firewalld
0.2.2 關閉swap記憶體
swapoff -a
修改/etc/fstab檔案,註釋掉SWAP的自動掛載,使用free -m確認swap已經關閉。
0.2.3 關閉selinux
vim /etc/sysconfig/selinux 將SELINUX修改為disabled
執行
setenforce 0
0.3 調整核心引數
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sudo sysctl --system
一 安裝
1.0 版本選擇
三臺機器都需安裝docker, kubeadm, kubelet和kubectl
版本如下:
docker-1.12.6-68 kubelet-1.9.0-0.x86_64 kubectl-1.9.0-0.x86_64 kubeadm-1.9.0-0.x86_64
1.1 安裝docker
yum install -y docker
systemctl enable docker
systemctl start docker
配置docker代理
mkdir -p /etc/systemd/system/docker.service.d
新增如下內容到/etc/systemd/system/docker.service.d/http-proxy.conf
[Service]
Environment="HTTP_PROXY=http://127.0.0.1:8118" "NO_PROXY=localhost,172.16.0.0/16,127.0.0.1,10.244.0.0/16"
新增如下內容到/etc/systemd/system/docker.service.d/https-proxy.conf
[Service]
Environment="HTTPS_PROXY=https://127.0.0.1:8118" "NO_PROXY=localhost,172.16.0.0/16,127.0.0.1,10.244.0.0/16"
啟動docker
systemctl daemon-reload && systemctl restart docker
1.2 安裝kubeadm, kubelet和kubectl
配置kubernetes源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF
開始安裝
yum install -y kubelet kubeadm kubectl
systemctl enable kubelet && sudo systemctl start kubelet
至此,在所有機器上安裝所需的軟體已經結束。
二 在master上配置
2.0 初始化K8S
通過kubeadm init命令來初始化,指定一下kubernetes版本,並設定一下pod-network-cidr。
kubeadm init --kubernetes-version=v1.9.0 --pod-network-cidr=10.244.0.0/16
等待執行完成後,會看到類似如下的提示,非常友好
kubeadm join --token 2fae1b.e4306e679794caaf 172.16.93.220:6443 --discovery-token-ca-cert-hash sha256:26d12811d5a60ecd91ba6bfea03daa34460d6143ceb11777179fd02e09f0ad16
這行內容先記錄下,等下節點新增的時候要使用。
如果初始化失敗,可以重置下,再初始化
kubeadm reset
2.1 新增K8S配置
export KUBECONFIG=/etc/kubernetes/admin.conf
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
2.2 安裝network addon
要docker之間能互相通訊需要做些配置,這裡用Flannel來實現
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/v0.9.1/Documentation/kube-flannel.yml
安裝完成後,檢查下kube-dns是否安裝成功。kube-dns比較重要,它負責整個叢集的解析,要確保它正常執行。使用kubectl get pods –all-namespaces命令檢視
[root@k8s ~]# kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
default redis-test-9b545dd64-8v5mv 1/1 Running 0 1d
kube-system etcd-k8s 1/1 Running 1 2d
kube-system heapster-5c448886d-z9j4n 1/1 Running 0 1d
kube-system kube-apiserver-k8s 1/1 Running 1 2d
kube-system kube-controller-manager-k8s 1/1 Running 1 2d
kube-system kube-dns-6f4fd4bdf-pp8bg 3/3 Running 3 2d
kube-system kube-flannel-ds-2xmhn 1/1 Running 3 2d
kube-system kube-flannel-ds-rdnwn 1/1 Running 2 2d
kube-system kube-flannel-ds-sqltw 1/1 Running 1 2d
kube-system kube-proxy-4zbrs 1/1 Running 2 2d
kube-system kube-proxy-d4mpm 1/1 Running 1 2d
kube-system kube-proxy-drcf7 1/1 Running 2 2d
kube-system kube-scheduler-k8s 1/1 Running 1 2d
剛開始時是Pending狀態,之後可以看到kube-dns-6f4fd4bdf-pp8bg為running狀態。
至此,master部分的配置就完成了。
三 node加入叢集
登入172.16.89.34和172.16.89.35,執行剛才記錄的那一行命令
kubeadm join --token 2fae1b.e4306e679794caaf 172.16.93.220:6443 --discovery-token-ca-cert-hash sha256:26d12811d5a60ecd91ba6bfea03daa34460d6143ceb11777179fd02e09f0ad16
順利的話可以看到類似如下的提示
Run 'kubectl get nodes' on the master to see this node join the cluster.
回到master機器上,執行該命令檢視結果
[[email protected] ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
cs-k8s-34 Ready <none> 2d v1.9.0
cs-k8s-35 Ready <none> 2d v1.9.0
k8s Ready master 2d v1.9.0
可以看到兩個節點都已經加入了,並且是正常的ready狀態。
至此,整個叢集的配置完成,可以開始使用了。
四 配置dashboard
預設是沒web介面的,可以在master機器上安裝一個dashboard外掛,實現通過web來管理
4.0 下載配置檔案
wget https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml
編輯kubernetes-dashboard.yaml檔案,新增type: NodePort,暴露Dashboard服務。注意這裡只新增行type: NodePort即可,其他配置不用改,大概位置在末尾的Dashboard Service的spec中,162行,參考如下。
# ------------------- Dashboard Service ------------------- #
kind: Service
apiVersion: v1
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kube-system
spec:
type: NodePort
ports:
- port: 443
targetPort: 8443
selector:
k8s-app: kubernetes-dashboard
4.1 安裝Dashboard外掛
kubectl create -f kubernetes-dashboard.yaml
4.2 授予Dashboard賬戶叢集管理許可權
需要一個管理叢集admin的許可權,新建kubernetes-dashboard-admin.rbac.yaml檔案,內容如下
---
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard-admin
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: kubernetes-dashboard-admin
labels:
k8s-app: kubernetes-dashboard
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: kubernetes-dashboard-admin
namespace: kube-system
執行命令
kubectl create -f kubernetes-dashboard-admin.rbac.yaml
找到kubernete-dashboard-admin的token,使用者登入使用
執行命令
[root@k8s ~]# kubectl -n kube-system get secret | grep kubernetes-dashboard-admin
kubernetes-dashboard-admin-token-ddskx kubernetes.io/service-account-token 3 1d
可以看到名稱是kubernetes-dashboard-admin-token-ddskx,使用該名稱執行如下命令
[[email protected] ~]# kubectl describe -n kube-system secret/kubernetes-dashboard-admin-token-ddskx
Name: kubernetes-dashboard-admin-token-ddskx
Namespace: kube-system
Labels: <none>
Annotations: kubernetes.io/service-account.name=kubernetes-dashboard-admin
kubernetes.io/service-account.uid=3e70cc52-f121-11e7-a359-52540059e4c5
Type: kubernetes.io/service-account-token
Data
====
ca.crt: 1025 bytes
namespace: 11 bytes
token: eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJrdWJlcm5ldGVzLWRhc2hib2FyZC1hZG1pbi10b2tlbi1kZHNreCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJrdWJlcm5ldGVzLWRhc2hib2FyZC1hZG1pbiIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6IjNlNzBjYzUyLWYxMjEtMTFlNy1hMzU5LTUyNTQwMDU5ZTRjNSIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlLXN5c3RlbTprdWJlcm5ldGVzLWRhc2hib2FyZC1hZG1pbiJ9.vz7xBUDYoIfeR83BfbUKAWFiKUAgTen7GP9b7d2nmcNIwAht6Xl6OaC-vjC66gaBD9Y-1ljb384jUoHQ0wCxE4tNFE8G5FR7-xbt-OpFt5razy28QIZYzeK_cP5af5RcdacYwWIRGHdPAp8Ki2dGNTqXMNL-0ySosCvNisTNgzvn0XbggLmXGYLfluNm75aitJFuzR3tOtKd-2qL27jccOtDE_MtE4zRQ-X5ikHT2vQGOEfLGaukbFN211AFVPe6Vgp18TJM3kTc0Yom5947ZB1E660IP4mCatMwHDadutb662rNJGSn65shrBua9u7yBK9xWQ_asAjHfZGKhdO2wg
記下這串token,等下登入使用,這個token預設是永久的。
4.3 找出Dashboard服務埠
[[email protected] ~]# kubectl get svc -n kube-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
heapster ClusterIP 10.103.146.118 <none> 80/TCP 1d
kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP 2d
kubernetes-dashboard NodePort 10.103.190.189 <none> 443:31472/TCP 1d
monitoring-grafana ClusterIP 10.109.25.3 <none> 80/TCP 1d
monitoring-influxdb ClusterIP 10.109.165.19 <none> 8086/TCP 1d
可以看到它對外的埠為31472。
開啟瀏覽器,訪問https://172.16.93.220:31472/#!/login,選擇令牌,輸入剛才的token即可進入
介面如下
上圖的圖表需要安裝heapster儀表盤外掛才能看到
五 部署heapster外掛
mkdir -p ~/k8s/heapster
cd ~/k8s/heapster
wget https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/influxdb/grafana.yaml
wget https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/rbac/heapster-rbac.yaml
wget https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/influxdb/heapster.yaml
wget https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/influxdb/influxdb.yaml
kubectl create -f ./
安裝完成後,重新登入即可看到。
六 後記
相關推薦
使用 kubeadm 安裝部署 kubernetes 1.9-部署heapster插件
master aml con inf uber kubectl net raw 重新 1.先到外網下載好鏡像倒進各個節點 2.下載yaml文件和創建應用 mkdir -p ~/k8s/heapster cd ~/k8s/heapster wget https://raw.
使用 kubeadm 安裝部署 kubernetes 1.9
kubeadm是官方提供的安裝方案,比純手工安裝方便。 零 準備 在安裝前需做些設定讓系統環境一致,確保後面順利安裝。 0.0 硬體情況 系統:centos 7 使用者: root 機器規劃: 角色 數量 配置
使用 Kubeadm 安裝部署 Kubernetes 1.12.1 集群
etc firewall emctl linu http nbsp set -s code 手工搭建 Kubernetes 集群是一件很繁瑣的事情,所以就產生了很多輔助性安裝工具,如 Kubeadm ,Kubespray,RKE 等組件,我最終選擇了官方的 Kubeadm
使用 Kubeadm 安裝部署 Kubernetes 1.12.1 叢集
手工搭建 Kubernetes 叢集是一件很繁瑣的事情,為了簡化這些操作,就產生了很多安裝配置工具,如 Kubeadm ,Kubespray,RKE 等元件,我最終選擇了官方的 Kubeadm 主要是不同的 Kubernetes 版本都有一些差異,Kubeadm 更新與支援的會好一些。Kubeadm 是 K
Kubeadm 安裝部署 Kubernetes 叢集
閱讀目錄: 準備工作 部署 Master 管理節點 部署 Minion 工作節點 部署 Hello World 應用 安裝 Dashboard 外掛 安裝 Heapster 外掛 後記 關於 Kubernetes 的相關概念內容,上面這篇文章已經整理的很詳細了,這邊就不再進行敘述了。 這篇文章主要記錄的
使用kubeadm快速部署Kubernetes(v1.12.1)叢集---來源:馬哥教育馬哥原創
使用kubeadm快速部署Kubernetes(v1.12.1)叢集------來源:馬哥教育馬哥原創 Kubernetes技術已經成為了原生雲技術的事實標準,它是目前基礎軟體領域最為熱門的分散式排程和管理平臺。於是,Kubernetes也幾乎成了時下開發工程師和運維工程師必備的技能之一。 一、主機環境預
kubernetes 1.9安裝
1.機器準備 機器列表 hostname ip docker版本 系統版本 master 192.168.6.39 1.13.1 Centos7.1 node1 192.168.6.163 1.
kubernetes 1.9安裝中遇到的錯誤
執行kubeadm init命令 [[email protected]-kubernetes ~]# kubeadm init --kubernetes-version=v1.9.0 --pod-network-cidr=10.244.0.0/16
利用 Kubeadm部署 Kubernetes 1.13.1 叢集實踐錄
概 述 Kubernetes叢集的搭建方法其實有多種,比如我在之前的文章《利用K8S技術棧打造個人私有云(連載之:K8S叢集搭建)》中使用的就是二進位制的安裝方法。雖然這種方法有利於我們理解 k8s叢集,但卻過於繁瑣。而 kubeadm是 Kubernetes官方提供的用於快速部署Kubernete
使用kubeadm安裝kubernetes1.7/1.8/1.9
本文以v1.7.2為例 0 環境 環境: 主機名 IP k8s-master 172.16.120.151 k8s-node01 172.16.120.152 k8s-node02 172.16
kubeadm部署kubernetes 1.13.1叢集
kubeadm是Kubernetes官方提供的用於快速部署Kubernetes叢集的工具,本次使用kubeadm搭建一個3節點的單叢集k8s。 #kubernetes部署dashboard視覺化外掛: https://blog.csdn.net/networken/articl
kubernetes 1.9.2 安裝步驟
系統資訊[[email protected] ~]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) 叢集環境10.10.9.11 master 10.10.9.12 node1 10.10
Kubernetes | 學習教程 (一)Kubernetes 1.9.0 離線安裝教程
為了讓產品在迎來業務量爆發式增長前完成應對措施,在瀏覽無數的資料後,決定將服務逐漸進行容器化,最終能達到容器叢集的效果。而容器叢集的解決方案中,kubernetes(簡稱k8s)看起來是個可行的方案。我目前的理解是,k8s就是docker容器叢集的一個管理系統,有很多實用功能
使用kubeadm安裝部署k8s V1.12.1(兩種方式)
規劃 預計使用三個節點來完成k8s的初次體驗工作。結點規劃如下表所示。 IP 節點角色 工作職責 192.168.217.129 master 對外暴露API,對內提供工作流的排程和配置 192.168.217.130 node1 承載著k
Kubernetes 1.9集群使用traefik發布服務
k8s rbac traefik deployment 在前文中介紹了在kubernetes 1.5.2集群環境中使用traefik進行服務發布。Traefik采用daemonset方式部署,連接api-server走的是http協議,也未配置rbac。本文將介紹在k8s 1.9版本中使用de
Centos 編譯安裝Apache subversion-1.9.7 + httpd 2.4.32
Subversion HTTPsvn是Subversion的簡稱,是一個開放源代碼的版本控制系統。一、下載安裝Subversion必要的源碼文件Apachewget http://mirrors.shu.edu.cn/apache/httpd/httpd-2.4.32.tar.gzSubversionwge
redis安裝部署(Centos6.9)
redis1 下載redis包,編譯安裝 wget http://download.redis.io/redis-stable.tar.gz tar xf redis-stable.tar.gz && cd redis-stable make (若有報錯安裝對應的依賴包;然後先執行
SaltStack自動化部署Kubernetes v1.9.3版本----Dashboard
docker k8s kubernetes [root@linux-node1 coredns]# pwd/srv/addons/coredns [root@linux-node1 srv]# cd addons/[root@linux-node1 addons]# lscoredns dash
CentOS7.5利用Kubeadm安裝Kubernets(k8s)1.12.2(國內版)(一)
國內版 一、部署Kubernetes1.12.2(無dashboard) 1、所有節點部署docker-ce kubernetesyum源 阿里雲docker-ce地址 :https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo直接
Centos7安裝部署Kubernetes(K8s)集群
signed node use ots 新的 b- 分區 str ext Kubernetes集群的安裝有多種方式:下載源碼包編譯安裝、下載編譯好的二進制包安裝、使用kubeadm工具安裝等。本文是以二進制文件方式安裝Kubernetes集群。系統環境 主機名 IP地