Kubernetes教程-部署安装

第四章 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

 

posted @   —八戒—  阅读(829)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
历史上的今天:
2015-06-04 linux配置java环境变量(详细) [转]
2015-06-04 为什么要设置Java环境变量(详解)[转]
2015-06-04 win7 下配置 java 环境变量[转]
2015-06-04 linux centos下 安装jdk
点击右上角即可分享
微信分享提示