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笔记,部分格式有疏忽,见谅!!!