1. 程式人生 > >kubeadm搭建k8s v1.10.13

kubeadm搭建k8s v1.10.13

開發十年,就只剩下這套架構體系了! >>>   

簡介

首先說下為什麼選擇這個版本,因為這個版本是目前k8s1.10分支中最穩定的版本,其次是k8s dashboard支援得比較好的版本,而且是比較成熟的版本,所以選擇了這個版本

系統初始化

首先我們初始化下新安裝的系統,我有兩臺機器

  • 10.10.10.120
  • 10.10.10.121

下面的操作兩臺機器都要操作

使用我下面這個指令碼關閉firewalld什麼的

curl -O https://raw.githubusercontent.com/bboysoulcn/centos/master/centos.sh

**********************************
Powered by bboysoul
Email: [email protected]
Hostname: bboysoul-k8s-master
Virtualization is not supported
Cpu model: Common KVMprocessor
Memory: 3789 M
Swap:  0 M
Kernel version:  CentOS Linux release 7.6.1810 (Core)
**********************************
1) install_software    5) set_hostname	     9) install_ohmyzsh
2) install_python      6) close_selinux	    10) add_user
3) set_static_ip       7) install_docker    11) exit
4) close_firewalld     8) change_swap	    12) help:

選擇第一項安裝基礎軟體,選擇第四項關閉firewalld,選擇第五項設定主機名,我的主機名是下面兩個

  • bboysoul-k8s-master
  • bboysoul-k8s-slave1

選擇第六項關閉selinux,選擇第七項安裝docker,選擇第九項安裝oh my zsh

關閉swap

swapoff -a

之後修改docker的倉庫地址,編輯下面這個檔案

vim /etc/docker/daemon.json

加入

{
  "registry-mirrors": [
                        "https://docker.mirrors.ustc.edu.cn"
                        ]
}

重啟docker

安裝kubeadm kubelet kubectl

同樣的兩臺機器都要操作

新增軟體源

vim /etc/yum.repos.d/kubernetes.repo

加入

[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

安裝

yum install kubeadm-1.10.13-0.x86_64 kubelet-1.10.13-0.x86_64 kubectl-1.10.13-0.x86_64

讓kubelet開機啟動

systemctl enable kubelet

啟動kubelet

systemctl start kubelet

發現kubelet啟動不起來

報錯

"systemed" is different from docker cgroup driver: "cgroupfs"

於是

vim /etc/systemd/system/kubelet.service.d/10-kubeadm.conf

修改

Environment="KUBELET_CGROUP_ARGS=--cgroup-driver=systemed"

Environment="KUBELET_CGROUP_ARGS=--cgroup-driver=cgroupfs"

另外一個節點也要這麼做

啟動master節點

輸入下面的命令啟動master節點

kubeadm init --kubernetes-version stable-1.10 --apiserver-advertise-address 10.10.10.120 --pod-network-cidr=10.244.0.0/16

報錯

[ERROR SystemVerification]: unsupported docker version: 18.09.3

說docker版本不支援,直接忽略

kubeadm init --kubernetes-version stable-1.10 --apiserver-advertise-address 10.10.10.120 --pod-network-cidr=10.244.0.0/16 --ignore-preflight-errors=all

最後顯示

Your Kubernetes master has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

You can now join any number of machines by running the following on each node
as root:

  kubeadm join 10.10.10.120:6443 --token xv3h2w.x1mwfesew7jcn07b --discovery-token-ca-cert-hash sha256:16fce397d457f1fcbdfc04031fbea686722dbf9c4a5b356a06ff2d3b955528d0

說明成功

新增work節點

直接使用下面命令在work節點新增就好

kubeadm join 10.10.10.120:6443 --token xv3h2w.x1mwfesew7jcn07b --discovery-token-ca-cert-hash sha256:16fce397d457f1fcbdfc04031fbea686722dbf9c4a5b356a06ff2d3b955528d0 --ignore-preflight-errors=all

之後在master節點執行

  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

kubectl get node

你會發現兩個節點都是沒有ready的,kube-dns一直在pending狀態,是因為沒有安裝flannel網路的緣故

➜  ~ kubectl get node
NAME                  STATUS     ROLES     AGE       VERSION
bboysoul-k8s-master   NotReady   master    12m       v1.10.13
bboysoul-k8s-slave1   NotReady   <none>    3m        v1.10.13

安裝flannel網路

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/v0.10.0/Documentation/kube-flannel.yml

完成之後等幾分鐘執行

kubectl get node

你就會發現所有的節點都已經ready了

建立使用者

建立使用者

vim ServiceAccount.yaml

apiVersion: v1
kind: ServiceAccount
metadata:
  name: bboysoul
  namespace: kube-system

給使用者繫結許可權 vim ClusterRoleBinding.yaml

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: bboysoul
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: bboysoul
  namespace: kube-system

之後應用執行上面的操作

kubectl apply -f ServiceAccount.yaml

kubectl apply -f ClusterRoleBinding.yaml

接著檢視使用者的token

kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep bboysoul | awk '{print $1}')

安裝dashboard

安裝

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml

修改dashboard的service型別為nodeport

kubectl -n kube-system edit service kubernetes-dashboard

把spec下

type: ClusterIP

改為

type: NodePort

檢視分配的埠

kubectl get svc -n kube-system

之後使用https訪問

https://10.10.10.120:31930

接著我們使用上面建立的使用者的token登入就好了

最後說幾句

關於國內網路環境什麼的,這個我就不說了,拉取映象你可以在國內各個映象源裡面拉,實在不會可以問我,我因為是路由器上外網的,所以就不存在這些噁心的問題,還有k8s的更新實在是太快了,很久之前我就寫了搭建1.12版本的,後來因為工作忙,一直沒有出來,當我再想寫的時候出了1.13,當我想完善1.13安裝的時候,版本又更新了,無奈,找一個最穩定的版本玩玩算了。

歡迎關注Bboysoul的部落格www.bboysoul.co