之前有用centos7的环境部署过,这次把ubuntu18.04的版本也记录一下,之前的笔记可以查看https://sulao.cn/post/802.html
部署过程差不了太多,这次ubuntu版本部署网络组建选择的是calico,我们直接查看下部署过程吧
系统约定
192.168.137.11 k8s-master 192.168.137.12 k8s-node1 192.168.137.13 k8s-node2
1.配置基础环境和依赖包的安装
在所有节点操作
sudo apt update sudo apt install gcc gcc+ make apt-transport-https ca-certificates curl gnupg-agent gnupg lsb-release make software-properties-common
登录每台机器修改/etc/hosts,添加以下三行
192.168.137.11 k8s-master 192.168.137.12 k8s-node1 192.168.137.13 k8s-node2
修改每个节点的主机名为上面三个
sudo hostnamectl set-hostname 主机名
关闭swap
sudo swapoff -a
修改/etc/fstab,注释掉swap.img相关内容行
关闭防火墙
systemctl stop ufw systemctl disable ufw
优化内核参数
cat >/etc/sysctl.d/k8s.conf<<EOF net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF
执行以下命令使内核优化命令生效
sysctl --system
2.安装配置docker
在所有节点操作
由于安装最新版docker可能出现问题,所以我们安装指定版本的docker
首先添加docker官方的GPG 证书
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
然后添加软件源
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
然后更新
sudo apt update
可以使用如下命令查看可安装的版本
sudo apt-cache madison docker-ce
然后我们直接安装最新版
sudo apt install -y docker-ce docker-ce-cli containerd.io
设置docker套接字777权限
sudo chmod 777 /var/run/docker.sock
设置docker开机自启动
sudo systemctl enable --now docker
添加docker配置
cat >/etc/docker/daemon.json<<EOF { "registry-mirrors": [ "https://registry.docker-cn.com", "https://docker.mirrors.ustc.edu.cn" ], "exec-opts": [ "native.cgroupdriver=systemd" ], "log-driver": "json-file", "log-opts": { "max-size": "10m", "max-file": "1" }, "storage-driver": "overlay2" } EOF
重启docker,加载配置
sudo systemctl daemon-reload sudo systemctl restart docker
3.安装配置k8s组件
首先添加安装源,在所有节点操作
在所有节点操作
sudo apt-get update && sudo apt-get install -y apt-transport-https curl curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add - cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main EOF sudo apt-get update
然后安装kubeadm、kubelet、kubectl等组件
sudo apt install -y kubeadm kubelet kubectl sudo apt-mark hold kubelet kubectl sudo systemctl restart kubelet
然后在master节点操作,生成配置文件
cd /etc/kubernetes kubeadm config print init-defaults > default.yaml
接着我们需要对配置文件default.yaml进行修改
修改集群能被所有ip访问
sed -i "s/1.2.3.4/0.0.0.0/" /etc/kubernetes/default.yaml
修改成国内源
sed -i "s#k8s.gcr.io#registry.cn-hangzhou.aliyuncs.com/google_containers#" /etc/kubernetes/default.yaml
增加pod网段
sed -i '/10.96.0.0\/12/a\ podSubnet: 10.244.0.0\/16' /etc/kubernetes/default.yaml
配置文件默认节点不是主机名,替换成主机名
sed -i "s/name: node/name: $HOSTNAME/g" /etc/kubernetes/default.yaml
接着就是初始化集群操作了
kubeadm init --config=default.yaml
执行以上命令最后会打印如下命令,下面命令是节点加入k8s集群时使用
kubeadm join 192.168.137.11:6443 --token abcdef.0123456789abcdef \ --discovery-token-ca-cert-hash sha256:33d5007783d142d49c5576c046dc1c08b543ab8d5a1f279535994a8872f7ea52
此时我们可以使用命令查看下node状态,因为还未安装网络插件,所以状态应该是Notready状态
kubectl get node
接着还是在master节点上操作
配置config文件
配置config文件 mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
接着我们在master节点安装网络插件,这次选择的是calico,calico相关资料可以查看这里:https://docs.tigera.io/calico/latest/getting-started/kubernetes/quickstart
kubectl apply -f https://docs.projectcalico.org/manifests/tigera-operator.yaml curl -SLO https://docs.projectcalico.org/manifests/custom-resources.yaml
修改custom-resources.yaml文件内的IP地址段
cidr: 192.168.0.0/16 #改为 cidr: 10.244.0.0/16 kubectl apply -f custom-resources.yaml
执行完成以后等3分钟后再使用kubectl get node 查看集群网络状态
状态正常,至此k8s集群部署完成