Centos7 k8s安裝部署


一、概念

  k8s(Kubernetes):因為中間有八個字母,所以國人稱k8s。

二、安裝方法

  yum安裝:最簡單,默認1.5.2版

  編譯安裝:最難(大佬級別)  golang環境

  二進制安裝:最繁瑣

  kubeadm:官方安裝(網絡)kubelet二進制,其他k8s組件全是容器

  minikube:單機版,只適合體驗    

  注意:默認yum安裝docker是1.13版的,但是會出現容器之間通信不了,必須要降到1.12版的。

三、安裝以往的docker版本(1.12)。

  1、下載地址:http://vault.centos.org/7.4.1708/extras/x86_64/Packages/

wget http://vault.centos.org/7.4.1708/extras/x86_64/Packages/docker-common-1.12.6-71.git3e8e77d.el7.centos.x86_64.rpm
wget http://vault.centos.org/7.4.1708/extras/x86_64/Packages/docker-client-1.12.6-71.git3e8e77d.el7.centos.x86_64.rpm
wget http://vault.centos.org/7.4.1708/extras/x86_64/Packages/docker-1.12.6-71.git3e8e77d.el7.centos.x86_64.rpm

  2、安裝

yum localinstall docker-common-1.12.6-71.git3e8e77d.el7.centos.x86_64.rpm -y
yum localinstall docker-client-1.12.6-71.git3e8e77d.el7.centos.x86_64.rpm -y
yum localinstall docker-1.12.6-71.git3e8e77d.el7.centos.x86_64.rpm -y

  3、查看版本

docker version

  4、master節點安裝etcd(k8s數據庫kv類型存儲),原生支持做集群

[root@k8s-master opt]# yum install etcd.x86_64 -y

  5、修改配置文件第6行,第21行。

vim /etc/etcd/etcd.conf

   6、啟動服務

[root@k8s-master opt]# systemctl start etcd.service
[root@k8s-master opt]# systemctl enable etcd.service
[root@k8s-master opt]# netstat -ntl

  

   7、寫入測試數據

[root@k8s-master opt]# etcdctl set testdir/testkey0 oldboy             寫入值
[root@k8s-master opt]# etcdctl get testdir/testkey0                    獲取值

  8、集群健康檢查

[root@k8s-master opt]# etcdctl -C http://192.168.125.130:2379 cluster-health
member 8e9e05c52164694d is healthy: got healthy result from http://192.168.125.130:2379
cluster is healthy

  9、安裝

[root@k8s-master opt]# yum install kubernetes-master.x86_64 -y
[root@k8s-master opt]# vim /etc/kubernetes/apiserver

  

   23行,不刪除,會有一個坑,后面這里會報錯

  修改配置文件:

[root@k8s-master opt]# vim /etc/kubernetes/config

  

   10、啟動服務

[root@k8s-master ~]# systemctl enable kube-apiserver.service
[root@k8s-master ~]# systemctl start kube-apiserver.service 
[root@k8s-master ~]# systemctl enable kube-controller-manager.service 
[root@k8s-master ~]# systemctl start kube-controller-manager.service
[root@k8s-master ~]# systemctl enable kube-scheduler.service
[root@k8s-master ~]# systemctl start kube-scheduler.service

    api-server:接受並響應用戶的請求

    controller:控制器的概念,保證容器存活

    schedule:調度器,選擇啟動容器的node節點

    kubelet:通過調用docker管理容器的生命周期

    kube-proxy :讓容器被外界訪問

   11、在兩個node節點安裝服務

yum install kubernetes-node.x86_64 -y

   12、修改配置文件

[root@k8s-node1 ~]# vim /etc/kubernetes/config

[root@k8s-node1 ~]# vim /etc/kubernetes/kubelet

    13、兩個node節點啟動服務

[root@k8s-node1 ~]# systemctl start kubelet
[root@k8s-node1 ~]# systemctl enable kubelet
[root@k8s-node1 ~]# systemctl start kube-proxy
[root@k8s-node1 ~]# systemctl enable kube-proxy
[root@k8s-node1 ~]# systemctl status docker

[root@k8s-master ~]# setenforce 0
[root@k8s-node1 ~]# setenforce 0
[root@k8s-node2 ~]# setenforce 0
[root@k8s-master ~]# systemctl stop firewalld
[root@k8s-master ~]# systemctl disable firewalld
[root@k8s-master ~]# kubectl get nodes 查看哪些node節點可用

    14、三台節點都要安裝flannel網絡

yum install flannel -y

    15、三台節點都執行,修改flannl配置文件

 sed -i 's#http://127.0.0.1:2379#http://192.168.125.130:2379#g' /etc/sysconfig/flanneld 

   16、重啟服務

    master節點執行:

[root@k8s-master /]# etcdctl mk /atomic.io/network/config '{"Network":"172.16.0.0/16"}'                              設置網段
[root@k8s-master /]# systemctl enable flanneld.service
[root@k8s-master /]# systemctl start flanneld.service
[root@k8s-master /]# service docker restart
[root@k8s-master /]# systemctl restart kube-apiserver.service 
[root@k8s-master /]# systemctl restart kube-controller-manager.service 
[root@k8s-master /]# systemctl restart kube-scheduler.service 

     node:節點執行:

[root@k8s-node2 ~]# systemctl enable flanneld
[root@k8s-node2 ~]# systemctl start flanneld.service
[root@k8s-node2 ~]# service docker restart
[root@k8s-node2 ~]# systemctl restart kubelet.service
[root@k8s-node2 ~]# systemctl restart kube-proxy.service

  17、測試容器網絡連通性

[root@k8s-master ~]# ifconfig                                                                  查看flannel網卡IP地址
[root@k8s-master ~]# docker pull busybox                                                       pull一個專門測試網絡的小鏡像
[root@k8s-master ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/busybox latest 1c35c4412082 11 days ago 1.219 MB

[root@k8s-master ~]# docker save docker.io/busybox:latest >docker_busybox.tar.gz               下載鏡像
[root@k8s-master ~]# scp docker_busybox.tar.gz root@192.168.125.132:/opt 拷貝鏡像至其他node節點上
[root@k8s-node1 opt]# docker load -i docker_busybox.tar.gz 導入鏡像
[root@k8s-master opt]# docker run -it docker.io/busybox /bin/sh 進入容器,三台一起執行

   18、創建本地倉庫

[root@k8s-node2 opt]# vim /etc/sysconfig/docker         修改docker配置文件,三台主機上都要修改,由於這個docker版本低,所以是修改這個文件
加上 --registry-mirror=https://registry.docker-cn.com --insecure-registry=192.168.125.130:5000 這一句

   19、創建私有倉庫

[root@k8s-master opt]# docker pull hub.c.163.com/library/registry:latest                          從網上pull包
[root@k8s-master opt]# docker images 查看鏡像
[root@k8s-master opt]# docker tag 751f286bc25e registry:latest 重命名
[root@k8s-master opt]# docker rmi hub.c.163.com/library/registry:latest 刪除原來的鏡像
[root@k8s-master opt]# docker run -d -p 5000:5000 --restart=always --name registry -v /opt/myregistry:/var/lib/registry registry 起一個私有倉庫
[root@k8s-master opt]# docker ps

  20、pull安裝nginx鏡像

[root@k8s-master opt]# docker pull nginx:latest
[root@k8s-master opt]# docker run -it docker.io/nginx:latest /bin/bash
root@ff33fb456480:/# nginx -v 查看版本
nginx version: nginx/1.19.0
在容器中安裝vim命令
apt-get update
apt-get install vim

   21、上傳至私有倉庫

[root@k8s-master opt]# docker tag docker.io/nginx:latest 192.168.125.130:5000/nginx:1.19
[root@k8s-master opt]# docker push 192.168.125.130:5000/nginx:1.19

   22、擴展拉取mysql鏡像

[root@k8s-master opt]# docker pull mysql:5.7
[root@k8s-master opt]# docker images
[root@k8s-master opt]# docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7             必須要初始化mysql的密碼,容器才能拉起來
[root@k8s-master opt]# sudo docker exec -it mysql bash
root@52d7ccd55eaa:/# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.30 MySQL Community Server (GPL)

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

 推薦:需要租用雲服務器,域名等其他服務的可以掃描下方二維碼,價格優惠,華為雲服務,不懂得隨時問,專人解答:

   

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM