kubernetes安装和调试(1.20.9+docker19.03.0+weave)
学习kubernetes来对项目进行容器化部署。这里使用了VMware创建虚拟机来搭建k8s集群。
VMware:16.1.2,CentOS7,docker:19.03.0,kubeadm:1.20.9,kubectl:1.20.9,kubelet:1.20.9,weave。
CentOS安装
镜像下载
- CentOS7下载地址:CentOS 7.9
虚拟机创建
下载完成之后打开虚拟机进行安装即可。
到这儿就已经把虚拟机创建完成了,但是还需要配置网络和进行安装。
VMware网络配置
我的设置:
- master节点IP: 172.31.0.3
- node01节点IP:172.31.0.4
- node02节点IP:172.31.0.5
- 子网掩码:255.255.0.0
- 网关:172.31.0.2
- DNS:114.114.114.114
首先是在VMware中设置。
主页—>编辑—>虚拟网络编辑器
需要设置为静态的ip,所以在这儿取消勾选DHCP服务。
至此就设置完VMware了。
CentOS镜像安装
等待安装完成重启即可。
启动之后可以通过命令查看一下虚拟机的ip是否设置正确。
ip addr
测试一下网络通不通
ping www.baidu.com
可以看到已经ping通了,所以网络没问题,搭建k8s集群需要有master节点和node节点,这次创建了一个master节点,两个node节点。上述演示了创建master节点的过程,node节点的创建同上,记得把ip修改一下。
kuberbetes安装
简单的设置
安装所需工具
sudo yum -y install vim
sudo yum -y install wget
安装并配置 ntpdate,同步时间
sudo yum -y install ntpdate
sudo ntpdate ntp1.aliyun.com
sudo systemctl status ntpdate
sudo systemctl start ntpdate
sudo systemctl status ntpdate
sudo systemctl enable ntpdate
将主机名加入hosts文件中
sudo vim /etc/hosts
在文件最后加入下面的配置
172.31.0.3 master
172.31.0.4 node010
172.31.0.5 node02
设置安装的基础环境,比如需要关闭防火墙,关闭交换空间,关闭selinux等
# 将 SELinux 设置为 permissive 模式(相当于将其禁用)
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
#关闭swap
swapoff -a
sed -ri 's/.*swap.*/#&/' /etc/fstab
#允许 iptables 检查桥接流量
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sudo sysctl --system
关闭防火墙,或者开通指定端口(这个可以参考这篇☞文章)
sudo systemctl stop firewalld.service
sudo systemctl disable firewalld.service
docker安装
移除系统自带的docker
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
配置yum源,镜像用的是阿里云
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装指定版本的docker并启动
yum install -y docker-ce-19.03.0 docker-ce-cli-19.03.0 containerd.io-1.4.6
systemctl enable docker --now
配置加速
sudo mkdir -p /etc/docker # 创建文件夹
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://dockerproxy.com",
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com",
"https://ccr.ccs.tencentyun.com"
],
"insecure-registries": ["172.31.0.66:8088"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
至此docker就安装成功
docker version
查看docker版本。
kubeadm安装
安装kubelet、kubeadm、kubectl
# 配置k8s 下载的地址
cat <<EOF | sudo tee /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
exclude=kubelet kubeadm kubectl
EOF
# 安装3大件
sudo yum install -y kubelet-1.20.9 kubeadm-1.20.9 kubectl-1.20.9 --disableexcludes=kubernetes
# 启动kubelet
sudo systemctl enable --now kubelet
构建集群
下载镜像
# 将所需镜像加入txt文件中
kubeadm config images list | grep '^k8s.gcr' >imglist.txt
# 由于镜像是国外网站,创建shell脚本将镜像下载并用tag命名为原名称
vi pull.sh
#!/bin/bash
for image in $(cat imglist.txt)
do
imagename=$(echo $image | awk -F '/' '{print$NF}')
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imagename
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/$imagename $image
done
# 运行脚本下载镜像
bash pull.sh
主节点初始化,只需要在master节点运行即可
kubeadm init \
--apiserver-advertise-address=172.31.0.3 \
--control-plane-endpoint=master \
--image-repository registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images \
--kubernetes-version v1.20.9 \
--service-cidr=10.96.0.0/16 \
--pod-network-cidr=192.168.0.0/16
# 以下是各个命令的备注不需要执行
kubeadm init \
--apiserver-advertise-address=172.31.0.3 \ # master 节点ip
--control-plane-endpoint=master \ # 域名值
--image-repository registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images \ # 镜像仓库
--kubernetes-version v1.20.9 \ # k8s 版本
--service-cidr=10.96.0.0/16 \ # 网络范围 一般不用改 网络范围不重叠
--pod-network-cidr=192.168.0.0/16 # k8s 给pod分配网络ip的范围 一般不用改
#所有网络范围不重叠
出现下面的结果即为成功
# 我自己的运行结果
Your Kubernetes control-plane has initialized successfully!
# 组建集群 需要执行以下命令
To start using your cluster, you need to run the following as a regular user:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Alternatively, if you are the root user, you can run:
export KUBECONFIG=/etc/kubernetes/admin.conf
# 部署pod网络插件 连接k8s所有网络
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
https://kubernetes.io/docs/concepts/cluster-administration/addons/
You can now join any number of control-plane nodes by copying certificate authorities
and service account keys on each node and then running the following as root:
# 加入master节点
kubeadm join cluster-endpoint:6443 --token uu0mpy.fdsjy3wojwwpatyj \
--discovery-token-ca-cert-hash sha256:3d0c32c41667faf5424f6a3506e330bdaa57edda63c3d0f09bb4346c0b7c5b4f \
--control-plane
Then you can join any number of worker nodes by running the following on each as root:
# 加入工作node节点
kubeadm join cluster-endpoint:6443 --token uu0mpy.fdsjy3wojwwpatyj \
--discovery-token-ca-cert-hash sha256:3d0c32c41667faf5424f6a3506e330bdaa57edda63c3d0f09bb4346c0b7c5b4f
设置.kube/config
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
使用下面命令可以查看所有pod状态
kubectl get pod --all-namespaces -o wide
由于网络插件还没安装会有两个pod一直在pending
安装网络插件(weave)
去官网下载weave的yaml文件,查看yaml文件中用到的镜像,由于是通过国外的仓库下载镜像总是因为网络出现下载失败的问题,这里通过用公开的国内镜像加速源来下载,再通过tag修改为国外镜像源下载的名称。
kubectl apply -f https://github.com/weaveworks/weave/releases/download/v2.8.1/weave-daemonset-k8s.yaml
docker pull docker.m.daocloud.io/weaveworks/weave-kube
docker pull docker.m.daocloud.io/weaveworks/weave-npc
docker tag docker.m.daocloud.io/weaveworks/weave-kube weaveworks/weave-kube
docker tag docker.m.daocloud.io/weaveworks/weave-npc weaveworks/weave-npc
镜像下载完成,通过下面命令查看所有的pod,可以看到有两个weave正在初始化,等初始化完成之后之前两个pending中的pod也会创建。
kubectl get pod --all-namespaces -o wide
至此,集群就构建完成。
参考文档
相关资源
weave的yaml文件(阿里云盘):点击下载
标签:03,20,kubernetes,--,sudo,镜像,docker,安装,weave From: https://www.cnblogs.com/hhhhuaz/p/17497617.html