需要三台虚拟机
192.168.0.125
192.168.0.124
192.168.0.123
进入到kubernetes.io网站
查看三台主机的uuid
root@server1:~# cat /sys/class/dmi/id/product_uuid
三个主机名也不能一样哦!
查看一下我们要让放行的port
三台主机都做:
放行的端口号太多我们可以把防火墙关掉
root@server1:~# systemctl stop ufw && systemctl disable ufw
root@server2:~# systemctl stop ufw && systemctl disable ufw
root@server3:~# systemctl stop ufw && systemctl disable ufw
三台主机关闭swap分区
root@server1:~# vim /etc/sysctl.conf
添加参数:
net.ipv4.ip_forward=1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
vm.swappiness = 0
保存退出
刷新一下
root@server1:~# sysctl -p
root@server1:~# vim /etc/fstab #注释掉你的swap分区 不能使用scp拷贝到其他的虚拟机里 因为他们的uuid不一样所以不能拷贝
root@server1:~# swapoff -a ##临时关闭
root@server1:~# free -m
三台都做删除docker引擎
root@server1:~# apt remove docker* -y
root@server1:~# systemctl stop docker && systemctl disable docker
三台主机都安装containerd
root@server1:~# apt update
root@server1:~# apt install containerd.io -y
三台主机都下载模块
root@server1:~# apt install containerd.io -y
然后添加ipvs的规则
root@server1:~# mkdir -p /etc/sysconfig/modules
root@server1:~# vim /etc/sysconfig/modules/ipvs.modules
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack
保存退出
root@server1:~# chmod 755 /etc/sysconfig/modules/ipvs.modules
root@server1:~# bash /etc/sysconfig/modules/ipvs.modules
root@server1:~# lsmod | grep -e ip_vs -e nf_conntrack
root@server1:~# modprobe overlay
root@server1:~# modprobe br_netfilter
三台主机都做默认生成文件 自动生成
root@server1:~# containerd config default
三台主机都做替换到我们刚刚生成的那个文件
root@server1:~# containerd config default | sudo tee /etc/containerd/config.toml
三台主机都做生成了之后我们去修改
root@server1:~# vim /etc/containerd/config.toml
registry.aliyuncs.com/google_containers/pause:3.6
保存退出
我们启动containerd
root@server1:~# systemctl restart containerd.service
查看一下状态
root@server1:~# systemctl status containerd.service
上面的所有完成之后我们开始安装kubernetes
进去到阿里镜像站
https://developer.aliyun.com/mirror
oot@server1:~# apt-get update && apt-get install -y apt-transport-https
root@server1:~# curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
root@server1:~# cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
> deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
> EOF
root@server1:~# apt-get update
root@server1:~# apt-get install -y kubelet kubeadm kubectl
安装完成之后我们配置kubernetes
root@server1:~# kubeadm version
三台都做:我们使用k8s的时候没有tab键 将命令加入到bash中
root@server1:~# source <(kubeadm completion bash)
root@server1:~# source <(kubectl completion bash)
root@server1:~# source <(crictl completion bash)
三台主机上都做:上面的临时生效,现在我们让他永久生效
root@server1:~# vim .bashrc
在配置文件最后添加:
source <(kubeadm completion bash)
source <(kubectl completion bash)
source <(crictl completion bash)
保存退出
我们在crictl ps的时候会有这个错误,我们去修改他:
root@server1:~# ll /run/containerd/containerd.sock
/run/containerd/containerd.sock
root@server1:~# crictl config runtime-endpoint unix:///run/containerd/containerd.sock
然后修改配置文件
root@server1:~# vim /etc/crictl.yaml
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
timeout: 10
debug: false
pull-image-on-create: false
disable-pull-on-run: false
root@server1:~# crictl config runtime-endpoint unix:///run/containerd/containerd.sock
没问题之后我们去初始化
已修改配置文件的方式去初始化它
root@server1:~# kubeadm config print init-defaults > init.yaml
下面进行初始化
root@server1:~# kubeadm init --config=init.yaml
然后去后两台上做加入master(主机1)的节点
kubeadm join 192.168.0.125:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:2df125531339a965260ecbc1d635af005e3d40a1ad0f7db344c1077e0dfcd892
查看一下
root@server1:~# kubectl get nodes
全部执行一遍:
oot@server1:~# mkdir -p $HOME/.kube
root@server1:~# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
root@server1:~# sudo chown $(id -u):$(id -g) $HOME/.kube/config
root@server1:~# export KUBECONFIG=/etc/kubernetes/admin.conf
然后我们去下载一个网络 因为kubernetes的网络是独立的
Installing Addons | Kubernetes
选择calico网络
root@server1:~# curl https://projectcalico.docs.tigera.io/manifests/calico.yaml -O
root@server1:~# vim calico.yaml
查看我们的namespaces是否下载成功
root@server1:~# kubectl get pod --all-namespaces