部署 k8s dashboard

kubernetes 这个名字起源于古希腊,是舵手的意思,所以它的 Logo 既像一张渔网,又像一个罗盘。

谷歌采用这个名字的深意是:既然 Docker 把自己定位为驮着集装箱在大海上遨游的鲸鱼,那么谷歌就是要以 kubernetes 掌舵大航海时代的话语权,"捕获" 和 "指引" 这条鲸鱼按照 "主人" 设定的路线巡游,确保谷歌倾力打造的新一代容器世界的宏伟蓝图实现。

kubernetes 之所以叫 k8s,是因为 k 和 s 之间有8个字母。

k8s 的部署环境如下:

系统:CentOS7.6

docker version:docker-ce-18.06.1

kubernetes version:v1.19.0

IP:master(192.168.121.201)、node1(192.168.121.202)、node2(192.168.121.203)

采用 kubeadm 部署方式以 master 节点为例:

# master 节点

# 1. 设置主机名

hostnamectl set-hostname master

# 2. 配置主机名解析

echo '192.168.121.201 master' >>/etc/hosts

echo '192.168.121.202 node1' >>/etc/hosts

echo '192.168.121.203 node2' >>/etc/hosts

# 3. 配置 selinux

sed -i 's/SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

setenforce 0

# 4. 配置防火墙

systemctl stop firewalld && systemctl disable firewalld

# 5. 配置时钟同步

yum -y install chrony

sed -i 's/^server/#&/g' /etc/chrony.conf

sed -i '2a server time.windows.com iburst' /etc/chrony.conf

systemctl restart chronyd

systemctl enable chronyd

# 6. 关闭交换分区

sed -i 's/^[^#].*swap.*/#&/g' /etc/fstab

swapoff -a

# 7. 安装基础软件

yum -y install wget expect vim net-tools ntp bash-completion ipvsadm ipset jq iptables conntrack sysstat libseccomp

# 8. 安装 docker 的必备软件

yum -y install yum-utils device-mapper-persistent-data lvm2

# 9. 添加 docker 源,安装 docker-ce

yum-config-manager --add-repo=https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

yum install -y docker-ce-18.06.1.ce-3.el7

# 10. 设置 docker 启动和开机启动

systemctl start docker && systemctl enable docker

# 11. 配置 docker 镜像加速器

cat >/etc/docker/daemon.json << EOF

{

"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn/"]

}

EOF

# 12. 重新启动 docker 确保 docker 镜像加速器能正常工作

systemctl daemon-reload && systemctl restart docker

# 13. 加载 IPVS 模块

cat > /etc/sysconfig/modules/ipvs.modules <<EOF

#! /bin/bash

ipvs_modules="ip_vs ip_vs_lc ip_vs_wlc ip_vs_rr ip_vs_wrr ip_vs_lblc ip_vs_lblcr ip_vs_dh ip_vs_sh ip_vs_fo ip_vs_nq ip_vs_sed ip_vs_ftp nf_conntrack"

for kernel_module in \${ipvs_modules}

do

/sbin/modinfo -F filename \${kernel_module} > /dev/null 2>&1

if [ $? -eq 0 ]

then

/sbin/modprobe \${kernel_module}

fi

done

EOF

chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep ip_vs

# 14. 内核参数优化

cat > /etc/sysctl.d/k8s.conf << EOF

net.ipv4.ip_forward = 1

net.bridge.bridge-nf-call-iptables = 1

net.bridge.bridge-nf-call-ip6tables = 1

fs.may_detach_mounts = 1

vm.overcommit_memory=1

vm.panic_on_oom=0

fs.inotify.max_user_watches=89100

fs.file-max=52706963

fs.nr_open=52706963

net.ipv4.tcp_keepalive_time = 600

net.ipv4.tcp.keepaliv.probes = 3

net.ipv4.tcp_keepalive_intvl = 15

net.ipv4.tcp.max_tw_buckets = 36000

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp.max_orphans = 327680

net.ipv4.tcp_orphan_retries = 3

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_max_syn_backlog = 16384

net.ipv4.ip_conntrack_max = 65536

net.ipv4.tcp_max_syn_backlog = 16384

net.ipv4.top_timestamps = 0

net.core.somaxconn = 16384

EOF

# 15. 内核参数生效

sysctl --system

# 16. 配置 k8s 源,安装 k8s

cat > /etc/yum.repos.d/kubernetes.repo <<EOF

[kubernetes]

name=Kubernetes

baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/

enabled=1

gpgcheck=1

repo_gpgcheck=1

gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

EOF

yum install -y kubelet-1.19.0-0 kubeadm-1.19.0-0 kubectl-1.19.0-0

# 17. 配置和启动 kubelet

cat >/etc/sysconfig/kubelet << EOF

KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"

EOF

systemctl daemon-reload

systemctl restart kubelet && systemctl enable kubelet

# (node1 和 node2 执行到此处)

# 18. 节点初始化(仅 master 节点操作)

kubeadm init --kubernetes-version=1.19.0 --apiserver-advertise-address=192.168.121.201 --image-repository registry.aliyuncs.com/google_containers --service-cidr=10.1.0.0/16 --pod-network-cidr=10.244.0.0/16

 

# master 节点初始化成功后将 node 节点加入集群

安装网络插件:kubectl apply -f kube-flannel.yml

网络插件安装成功后,集群节点状态变为 Ready

# 删除旧证书创建新证书

kubectl delete secret kubernetes-dashboard-certs -n kubernetes-dashboard

kubectl create secret generic kubernetes-dashboard-certs --from-file=/etc/kubernetes/pki/apiserver.key --from-file=/etc/kubernetes/pki/apiserver.crt -n

kubernetes-dashboard

# 然后在 args 处添加如下内容:

- --tls-key-file=apiserver.key

- --tls-cert-file=apiserver.crt

# 添加后执行:kubectl apply -f kubernetes-dashboard.yml 

# 获取 token:kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')

# 通过 master 节点 IP:30001 端口访问 web 界面(配置文件里的端口号默认为 30001)

# web 界面如下所示: 

posted @ 2021-11-30 15:13  demoduan  阅读(293)  评论(0)    收藏  举报