docker+k8s+dashboard安装部署(附详细说明)
注:本文中所有命令均在所有机器节点执行,除特殊说明。
docker安装
1、确定自己是centos7及以上版本 cat /etc/redhat-release 2、完全卸载docker systemctl stop docker sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine yum remove docker-ce docker-ce-cli containerd.io rm -rf /var/lib/docker rm -rf /var/lib/containerd 3、安装需要的软件包 yum -y install gcc yum -y install gcc-c++ yum install -y yum-utils 4、设置stable镜像仓库 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 5.更新yum软件包索引 yum makecache fast 6、安装docker yum -y install docker-ce docker-ce-cli containerd.io 安装k8s时使用: yum install -y docker-ce-20.10.7 docker-ce-cli-20.10.7 containerd.io-1.4.6 7、启动docker并开机自启 systemctl enable docker --now 8、配置镜像加速( https://promotion.aliyun.com/ntms/act/kubernetes.html ) 获取:阿里云控制台->容器镜像服务->镜像工具->镜像加速器->加速器地址 sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-‘EOF’ { “registry-mirrors”: [“填自己的加速器地址”] } EOF sudo systemctl daemon-reload sudo systemctl restart docker 9、验证docker配置 docker info
配置预备环境
机器配置最低要求(2核4G): ? 每台机器 2 GB 或更多的 RAM (如果少于这个数字将会影响你应用的运行内存) ? 2 CPU 核或更多 ? 设置防火墙放行规则(集群中的所有机器的网络彼此均能相互连接(公网和内网都可以)) ? 内网互信(开启机器上的某些端口) 1、每台机器必须设置有意义的主机名(centos 7.9版本用法) hostnamectl set-hostname xxxx 2、将(linux的安全设置)SELinux 设置为 permissive 模式(相当于将其禁用) sudo setenforce 0 sudo sed -i ‘s/^SELINUX=enforcing$/SELINUX=permissive/’ /etc/selinux/config 3、为了保证 kubelet 正常工作,禁用交换分区(永久关闭) 验证:free -m(下面的Swap一栏是0 0 0则代表已关闭) swapoff -a sed -ri ‘s/.swap./#&/’ /etc/fstab 4、配置流量桥接(将ipv6的流量桥接到ipv4网卡上为了统计方便),允许 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
5、让以上配置生效 sudo sysctl --system
部署k8s主节点
1、配置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 2、安装三大件 sudo yum install -y kubelet-1.20.9 kubeadm-1.20.9 kubectl-1.20.9 --disableexcludes=kubernetes 3、启动kubelet(厂长) sudo systemctl enable --now kubelet 注意:此时使用systemctl status kubelet检查厂长状态,会看到 kubelet 现在每隔几秒就会重启,因为它陷入了一个等待 kubeadm 指令的死循环,实属正常。 4、提前下载所需镜像(防止由kubelet自动下载卡住) 主节点执行: 创建执行脚本: sudo tee ./images.sh <<-‘EOF’ #!/bin/bash images=( kube-apiserver:v1.20.9 kube-proxy:v1.20.9 kube-controller-manager:v1.20.9 kube-scheduler:v1.20.9 coredns:1.7.0 etcd:3.4.13-0 pause:3.2 ) for imageName in ${images[@]} ; do docker pull registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/$imageName done EOF 给予权限并开始下载: chmod +x ./images.sh && ./images.sh 工作节点(非主节点)执行(为了防止后续出错,这里建议继续执行上述主节点命令): docker pull registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/kube-proxy:v1.20.9 5、添加主节点域名映射 所有机器添加master域名映射,以下需要修改为主节点的内网ip: echo “xx.xx.xx.xx cluster-endpoint” >> /etc/hosts 验证: ping cluster-endpoint 6、主节点初始化(主节点执行) kubeadm init –apiserver-advertise-address=xx.xx.xx.xx –control-plane-endpoint=cluster-endpoint –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 以上配置分别为:主节点ip、主节点域名、镜像仓库、k8s版本、service网络范围、pod网络范围(以上三个网络范围千万不能重叠) 注意:上方的–pod-network-cidr=192.168.0.0/16如果自己改动,则需要把下方这处配置打开,并修改为自定义的。
配置成功结果,参考自己的(有用,需保留)
将其他机器作为工作节点或主节点加入k8s集群方法均在上方的成功结果显示中。 7、设置.kube/config(主节点执行),来自上方成功结果 mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown
(
i
d
?
u
)
:
(id -u):
(id?u):(id -g) $HOME/.kube/config 8、安装网络组件(这里安装calico)(主节点执行) 下载calico配置文件: curl https://docs.projectcalico.org/manifests/calico.yaml -O 根据配置文件,给集群创建资源:(若不是–pod-network-cidr=192.168.0.0/16,则需要另做处理) kubectl apply -f calico.yaml 9、查看集群部署的所有应用,确保所有应用的STATUS都为Running,要耐心等待(主节点执行) kubectl get pods -A 10、查看集群节点状态,确保STATUS均为Ready(显示所有节点)(主节点执行) kubectl get nodes
部署k8s工作节点
1、将工作节点加入k8s集群(在其它机器上执行):(此命令来自上方结果) 看自己的是什么… 上面信息24小时有效,过期需要重新创新的令牌(主节点执行): kubeadm token create --print-join-command 2、查看集群部署的所有应用,确保所有应用的STATUS都为Running,要耐心等待(主节点执行) kubectl get pods -A 3、查看节点状态,确保STATUS均为Ready(主节点执行) kubectl get nodes
安装可视化界面dashboard
1、部署(主节点执行) kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.3.1/aio/deploy/recommended.yaml 若网速太慢则选择手动下载: yum install -y wget wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.3.1/aio/deploy/recommended.yaml 也可以先下载百度下载上述连接,然后vi dashboard.yaml粘贴进去: kubectl apply -f dashboard.yaml 2、设置访问端口(主节点执行) 把端口暴露到机器上: kubectl edit svc kubernetes-dashboard -n kubernetes-dashboard 把显示内容中的type: ClusterIP 改为 type: NodePort 找到端口,在安全组放行: kubectl get svc -A |grep kubernetes-dashboard 3、访问(https://集群中任意机器IP:上述端口) 4、创建访问账号(主节点执行) 创建yaml文件:vi xxx.yaml
应用:kubectl apply -f xxx.yaml
5、令牌访问(主节点执行) 获取访问令牌: kubectl -n kubernetes-dashboard get secret $(kubectl -n kubernetes-dashboard get sa/admin-user -o jsonpath="{.secrets[0].name}") -o go-template="{{.data.token | base64decode}}" 使用生成的令牌放到以下界面点击登录: 以上内容均书写自onenote笔记,部分格式有疏忽,见谅!!!
|