1. 程式人生 > >使用 kubeadm 安裝部署 kubernetes 1.9

使用 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地