簡介:因工作要求所以學(xué)習(xí)了一下kubernetes相關(guān)知識,在這里和大家分享一下。文章中所有步驟都是在root權(quán)限下執(zhí)行的,如果文中有錯誤的地方還望看官交流指正,此文檔僅用作參考,謝謝。
準備:
準備3臺Cent OS7 虛擬機:
1.sh-vm3:172.17.1.43? port 4322 ; sh-vm4: 172.17.1.44? port 4422 ;?sh-vm5: 172.17.1.45 port 4522?
2.不需要ssh的同學(xué)忽略此步驟.
ssh -p 4322 root@218.255.12.218??ssh -p 4422 root@218.255.12.218??ssh -p 4522 root@218.255.12.218 開啟終端 分別連接三臺VM.
到這里我么的準備工作就完成了,下面讓我們開始k8s的部署吧。
Master:
1.我們把sh-vm3:172.17.1.43? port 4322 作為集群的Master.?sh-vm4和sh-vm5作為node.
2.在/etc/yum.repos.d/ 目錄下新建docker.repo文件:vim /etc/yum.repos.d/docker.repo? (如果沒有安裝vim 執(zhí)行 yum install vim). 在文件內(nèi)填入內(nèi)容
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/7/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
3.安裝docker:? ?yum install docker-engine-1.12.6? ,執(zhí)行 :
a. systemctl enable docker.service
b. systemctl daemon-reload
c. systemctl start docker
4.安裝最新的kubectl:
a. curl -LOhttps://storage.googleapis.com/kubernetes-release/release/$(curl -shttps://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
b. chmod +x ./kubectl? (修改權(quán)限)
c. mv ./kubectl /usr/local/bin/kubectl (移動文件位置)
5.安裝kubeadm和kubelet
a. 在 /etc/yum.repos.d/ 目錄下新建 kubernetes.repo文件: vim?/etc/yum.repos.d/docker.repo? 寫入內(nèi)容:
[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
b. 禁用selinux,執(zhí)行:? setenforce 0
c. 安裝kubeadm和kubelet , 執(zhí)行:? ?yum install -y kubeadm kubelet? ?(注意:如果在這里出現(xiàn)錯誤,執(zhí)行:vim?/etc/yum.repos.d/docker.repo ; 將 gpgkey 的第一個鏈接https://packages.cloud.google.com/yum/doc/yum-key.gpg刪除)
6.執(zhí)行 vim?/etc/systemd/system/kubelet.service.d/10-kubeadm.conf ;?將systemd更改為cgroupfs 并且在?"--allow-privileged=true"后添加?''--fail-swap-on=false" ,結(jié)果如下圖
7執(zhí)行?systemctl daemon-reload ;?systemctl enable kubelet && systemctl start kubelet
8.創(chuàng)建集群,執(zhí)行:kubeadm init --pod-network-cidr=10.244.0.0/16 ; (如果有提示 you can skip pre-flight ...那么在命令后面添加?--skip-preflight-checks 參數(shù)即可)這時候你可以看到如下內(nèi)容:
Your Kubernetes master has initialized successfully!
To start using your cluster, you need to run (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:
http://kubernetes.io/docs/admin/addons/
You can now join any number of machines by running the following on each node
as root:
kubeadm join --token b5866f.ce6a5b3c7dbf849a 172.17.1.43:6443 --discovery-token-ca-cert-hash sha256:2ee4d26c40d529ca3c5ea715cb8ef5e5fc81bd5f7430dfe8cdf187e050e277c1
按照提示一步步執(zhí)行即可
9.通過執(zhí)行以下命令設(shè)置pod網(wǎng)絡(luò):
a. kubectl apply - f?https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
b. kubectl apply -f?https://raw.githubusercontent.com/coreos/flannel/master/Documentation/k8s-manifests/kube-flannel-rbac.yml
c. 現(xiàn)在master準備接受連接,執(zhí)行步驟#8返回的kubeadm join命令,檢查節(jié)點是否加入了網(wǎng)絡(luò),執(zhí)行kubectl get node
10.等待node安裝#2執(zhí)行完,將master證書通過scp拷貝到node(有多臺則執(zhí)行多次):
a. scp -P 4422 /etc/kubernetes/pki/ca.keyroot@172.17.1.44:/etc/kubernetes/pki/1.key
b. scp -P 4422 /etc/kubernetes/pki/ca.crtroot@172.17.1.44:/etc/kubernetes/pki/1.crt
node將使用master上的證書生成新的證書
11.拷貝bootstrap-kubelet.conf 和~/.kube/config到node:
a. scp -P 4422 /etc/kubernetes/bootstrap-kubelet.confroot@172.17.1.44:/etc/kubernetes/
b. scp -P 4422 ~/.kube/configroot@172.17.1.44:~/.kube/
node安裝:
1.重復(fù)Master安裝步驟的2-6,完成之后執(zhí)行#2
2.在/etc/kubernetes/ 目錄下面新建pki 文件夾,用來存儲秘鑰,新建~/.kube/ 存放config文件:
?mkdir?/etc/kubernetes/pki/? ;? ?mkdir?~/.kube/? ?等待Master #10 #11執(zhí)行完畢進行下一步
3.安裝證書生成工具:
a. yum install httpd
b. systemctl enable httpd.service
c. yum install mod_ssl
4.生成證書(進入/pki文件目錄):
a. openssl genrsa -out ca.key 2048
b. openssl req -new -key ca.key -subj "/CN=172.17.1.44" -out ca.csr? ("/CN=ip"填入node的IP地址)
c. openssl x509 -req -in ca.csr -CA 1.crt -CAkey 1.key -CAcreateserial -out ca.crt -days 3650
5.啟動kubectl服務(wù):
a. systemctl enable kubelet && systemctl start kubelet
b. 執(zhí)行Master#8?kubeadm join --token b5866f.ce6a5b3c7dbf849a 172.17.1.43:6443 --discovery-token-ca-cert-hash sha256:2ee4d26c40d529ca3c5ea715cb8ef5e5fc81bd5f7430dfe8cdf187e050e277c1??(如果有提示?you can skip pre-flight ...那么在命令后面添加?--skip-preflight-checks 參數(shù)即可)
7.到這里我們的node節(jié)點就部署好了,執(zhí)行 kubectl get nodes 就可以看到集群的狀態(tài)啦。
題外話:初次使用簡書,排版不好還請諒解。如果有疑問的話可以留言,我會及時回復(fù)。