https://kuboard.cn/
记录ubuntu16.04下 部署Kubernetes过程。
参考以下文章
在ubuntu16.04下 部署Kubernetes 遇到的坑以及解决办法 亲测有用.
文章目录
一、虚拟机准备
环境:ubuntu 16.04
准备两个虚拟机(内存2G以上,K8s是比较消耗资源的)
一个作为 master节点 另一个作为node节点
我这两个 虚拟机的ip分别为
192.168.1.211 做master节点
192.168.1.212 做node节点
二、系统设置
1.先禁用swap
为了操作方便 建议都使用 root 用户
swapoff -a
查看swap是否成功关闭,使用free -m
free -m
如果 Swap 都为0 则禁用成功
设置交换分区开机不启动
因为没有注释掉swap的自动挂载,机器重启后,swap还是会自动启用,从而导致kubelet无法启动
修改 /etc/fstab文件
vi /etc/fstab
注释掉
2.关闭防火墙
关闭防火墙
ufw disable
开启防火墙
ufw enable
为什么要关闭防火墙?
如果各个主机启用了防火墙,需要开放Kubernetes各个组件所需要的端
因为Kubernetes的Master和Node之间有大量的网络通信,安全的做法是在防火墙上配置各组件需要相互通信的端口,在安全的网络环境中较为简单的做法是禁用Firewalld防火墙。解决方法是运行systemctl status firewalld 查看Firewalld防火墙状态。如果防火墙没有禁用,就禁用它
3.禁用Selinux
apt install selinux-utils
setenforce 0
不禁用Selinx 会导致Kubernetes 安装失败
4.在两个节点的 /etc/hosts配置中 分别 加入
192.168.1.211 master
192.168.1.212 node
5.两个节点中都要安装Docker
步骤:
先安装相关工具
apt-get update && apt-get install -y apt-transport-https curl
添加密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
安装Docker
apt-get install docker.io -y
查看Docker 版本 检验是否安装成功
docker version
6.启动docker服务
systemctl enable docker
systemctl start docker
使用阿里云 镜像加速,否则拉取对象的时候 会有问题
vi /etc/docker/daemon.json
{
"exec-opts":["native.cgroupdriver=systemd"],
"registry-mirrors": ["https://alzgoonw.mirror.aliyuncs.com"],
"live-restore": true
}
重启docker服务
systemctl restart docker
systemctl status docker
三、安装kubectl,kubelet,kubeadm( master 和 node 节点都执行)
1.添加密钥
google国内是没法访问的。选择了阿里
解决方案:Ubuntu16.04安装K8s.
sudo curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
sudo tee /etc/apt/sources.list.d/kubernetes.list <<-'EOF'
deb https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial main
EOF
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
systemctl enable kubelet
注:安装成功后不要执行systemctl start kubelet,执行是会报错的,直接向下执行就可以了。
%%%%可以复制一个镜像出来了,因为master和node现在的安装步骤都是一样的。之后的配置出现差异了。
四、配置Master(master节点211)
1.在master节点 /etc/profile 下面增加如下环境变量(只在master执行)
vi /etc/profile
export KUBECONFIG=/etc/kubernetes/admin.conf
重起kubelet
systemctl daemon-reload
systemctl restart kubelet
2.在master节点上执行kubeadm init
kubeadm init --kubernetes-version=v1.21.1 --pod-network-cidr 10.244.0.0/16
–pod-network-cidr 指定 Pod 网络的范围。Kubernetes 支持多种网络方案,而且不同网络方案对 --pod-network-cidr 有自己的要求,这里设置为 10.244.0.0/16 是因为我们将使用 flannel 网络方案
–kubernetes-version 通过kubectl version 可以查看到(本次搭建使用的是1.21.1),
但是 执行 这条命令之后会报错 原因是 被k8s.gcr.io 被墙了 无法拉取镜像 拉取镜像失败
执行
kubeadm config images list
列出的就是 所缺的镜像
这里我们使用阿里云的镜像仓库 拉取镜像
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.21.1
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.21.1
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.21.1
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.21.1
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.4.1
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.13-0
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.8.0
pull完成后docker images看一下是否拉取成功
拉取完成后
把这些镜像进行tag一下
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.21.1 k8s.gcr.io/kube-apiserver:v1.21.1
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.21.1 k8s.gcr.io/kube-controller-manager:v1.21.1
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.21.1 k8s.gcr.io/kube-scheduler:v1.21.1
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.21.1 k8s.gcr.io/kube-proxy:v1.21.1
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.4.1 k8s.gcr.io/pause:3.4.1
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.13-0 k8s.gcr.io/etcd:3.4.13-0
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.8.0 k8s.gcr.io/coredns/coredns:v1.8.0
接着重新执行
kubeadm init --kubernetes-version=v1.21.1 --pod-network-cidr 10.244.0.0/16
此时表示初始化成功
但此时集群还不可以使用,上图红框是需要执行的操作 执行完以后才能使用集群
1)执行
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
2)接下来配置flannel网络,可以到 https://github.com/coreos/flannel 找到图中的这句话
也可以直接执行:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
搞定,但是 raw.githubusercontent.com已经被墙了,如果可以科学上网,上面可以直接搞定,如果不能科学上网,这里放上kube-flannel.yml文件的源码
生产文件后,在文件所有目录执行
kubectl apply -f kube-flannel.yml
即可配置flannel网络~~~~
3)查看pod(只能在master执行):
kubectl get pods -n kube-system
k8s至此master节点已经搭建成功!!!!!
五.将node节点加入到集群中
注:若是全新的节点想要加入到集群中,需要进行上述node节点执行的操作步骤。
1.生成token(master节点执行)
kubeadm token create
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。