第四章 K8s部署安裝
一、kube-proxy開啟ipvs的前置條件
//1、加載netfilter模塊 modprobe br_netfilter //2、添加配置文件 cat > /etc/sysconfig/modules/ipvs.modules <<EOF #!/bin/bash modprobe -- ip_vs modprobe -- ip_vs_rr modprobe -- ip_vs_wrr modprobe -- ip_vs_sh modprobe -- nf_conntrack_ipv4 EOF //3、賦予權限並引導 chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4
二、安裝docker軟件
//1、docker依賴 yum install -y yum-utils device-mapper-persistent-data lvm2 //2、導入阿里雲的docker-ce倉庫 yum-config-manager \ --add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo //3、更新系統安裝docker-ce yum update -y && yum install -y docker-ce
重啟系統 reboot 重啟之后,看一下版本號是否還原回去了 uname -r
所以需要在重新執行一遍更新版本的命令,下面第4步就是做這個使用的 //4、uname -r 檢測版本,再設置版本,后又重啟reboot grub2-set-default "CentOS Linux (4.4.182-1.el7.elrepo.x86_64) 7 (Core)" && reboot 重啟之后uname -r命令查看版本號是否變過來了。
如果沒有變過來回到上一個教程的最后面重新做一遍,實在變過來就算了,不糾結繼續往后做
//5、啟動 systemctl start docker //6、開機自啟 systemctl enable docker //7、配置deamon,日志格式為json,方便后面ELK手機日志 cat > /etc/docker/daemon.json <<EOF { "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" } } EOF //8、創建目錄存放docker配置文件 mkdir -p /etc/systemd/system/docker.service.d //9、重啟docker systemctl daemon-reload && systemctl restart docker && systemctl enable docker
三、安裝Kubeadm(主從配置),通過它管理k8s。
//1、導入阿里雲的YUM倉庫 cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=0 repo_gpgcheck=0 gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF //2、在每個節點安裝kubeadm(初始化工具)、kubectl(命令行管理工具)、kubelet(與docker的cri交互創建容器) yum -y install kubeadm-1.15.1 kubectl-1.15.1 kubelet-1.15.1 // 3、k8s開機自啟.kubelet需要與容器接口進行交互啟動容器,而k8s通過Kubeadm安裝出來以后都是以pod方式存在,也就是底層以容器的方式運行,所以一定要開機自啟 systemctl enable kubelet.service
四、初始化主節點(master)
1、導入鏡像
Xshell rz命令
yum install -y lrzsz kubeadm-basic.images.tar.gz
2、解壓
tar -zxvf kubeadm-basic.images.tar.gz
3、導入,創建文件load-images.sh
vim load-images.sh
4、編輯load-images.sh
#!/bin/bash ls /root/kubeadm-basic.images > /tmp/image-list.txt cd /root/kubeadm-basic.images for i in $(cat /tmp/image-list.txt) do docker load -i $i done rm -rf /tmp/image-list.txt
5、賦予權限並執行
chmod a+x load-images.sh ./load-images.sh
6、復制到其他節點
scp -r kubeadm-basic.images load-images.sh root@k8s-node01:/root/ scp -r kubeadm-basic.images load-images.sh root@k8s-node02:/root/
其他節點導入
./load-images.sh
查看每個節點里面的docker鏡像
docker images
7、初始化主節點
//顯示init默認的初始化文件,並打印出來到kubeadm-config.yaml文件中,獲得默認的模版文件 [root@k8s-master01 ~]# kubeadm config print init-defaults > kubeadm-config.yaml
[root@k8s-master01 ~]# vim kubeadm-config.yaml
8、獲得了kubeadm的初始化模板,並修改
8.1 ip地址修改,不知道自己的ifconfig
8.2版本號修改
8.3、添加pod網段:podSubnet: "10.244.0.0/16"
原因是:默認情況下,安裝一個 flannel 插件,實現覆蓋性網絡,flannel的默認網關是10.244.0.0/16。
8.4、修改默認的調度方式
--- apiVersion: kubeproxy.config.k8s.io/v1alpha1 kind: KubeProxyConfiguration featureGates: SupportIPVSProxyMode: true mode: ipvs
9、指定從那個yaml文件進行初始化安裝,自動頒發證書,並將所有信息寫入到kubeadm-init.log
kubeadm init --config=kubeadm-config.yaml --experimental-upload-certs | tee kubeadm-init.log
10、查看kubeadm-init.log
cat /root/install-k8s/core/kubeadm-init.log
11、查看證書
cd /etc/kubernetes/pki
12、成功后根據日志提示操作執行命令
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config #當前所有者和所有組授予權限
13、查看節點
kubectl get node
STATUS=NotReady,因為還沒有安裝網絡,flannel,下面開始安裝網絡。
五、部署網絡
mkdir install-k8s mv kubeadm-init.log kubeadm-config.yaml install-k8s/ #挪到install-k8s目錄里 cd install-k8s ls mkdir core ls mv * core/ ls mkdir plugin cd plugin/ ls mkdir flannel cd flannel
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml kubectl create -f kube-flannel.yml
kubectl get pod -n kube-system #kube-system是命名空間的名稱
kubectl get node
STATUS=Ready
查看扁平化網絡flannel的存在
ifconfig
找到最下面的命令,將另外兩個node節點加入到master里面執行就可以了。
kubeadm join 192.168.4.86:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:b52a0597fe6d77df29230339bb80c3bc5536b47487dc485ff6a34648886fd74c [root@k8s-node01 ~] 執行上面的命令 [root@k8s-node02 ~] 執行上面的命令
再次查看node節點:
kubectl get node
查看pod詳細信息,默認的命名空間:kube-system
kubectl get pod -n kube-system kubectl get pod -n kube-system -o wide //詳細信息
//查看節點信息
kubectl get pod -n kube-system
kubectl get pod -n kube-system -w //監視
kubectl get pod -n kube-system -o wide // 詳細信息
nmtui命令調出修改窗口
移動已經安裝好的文件到/usr/local/目錄里,刪掉安裝文件。
//存放文件 mv install-k8s/ /usr/local/ rm -rf kubeadm-basic.images* rm -rf load-images.sh