k8s集群安装部署(简洁版-无详细服务作用介绍)
目录
一: 环境说明
主机名 ip 说明
master.xyh.com 192.168.10.200 master
node01.xyh.com 192.168.10.201 node01
node02.xyh.com 192.168.10.202 node02
二:初始化环境
配置主机ip,设置主机名;关闭防火墙,selinux;关闭swap;开启转发功能
hostnamectl set-hostname master.xyh.com
systemctl stop firewalld && systemctl disable firewalld
swapoff -a
#检查/etc/fstab没有默认开启swap
#设置iptable转发以及内生网桥功能
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
modprobe br_netfilter
sysctl -p /etc/sysctl.d/k8s.conf
setenforce 0 ; sed ‐i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config ; sestatus
安装运行时docker-ce
#安装所需依赖
yum install yum‐utils device‐mapper‐persistent‐data lvm2 -y
#添加docker-ce yum仓库,使用清华源
#yum‐config‐manager ‐‐add‐repo https://download.docker.com/linux/centos/docker‐ce.repo
yum-config-manager --add-repo https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
#安装docker-ce
#创建docker配置目录,并设置daemon文件
mkdir -p /etc/docker ;
cat > /etc/docker/daemon.json << EOF
{"exec-opts": ["native.cgroupdriver=systemd"],
"insecure-registries": ["0.0.0.0"]
}
EOF
#加载sys配置,启动docker
mkdir -p /etc/systemd/system/docker.service.d/
systemctl daemon-reload
systemctl restart docker
systemctl enable docker
三 安装k8s
安装kubeadm ,kubelet 和kubectl
您需要在每台机器上都安装以下的软件包:
kubeadm: 用来初始化集群的指令。
kubelet: 在集群中的每个节点上用来启动 pod 和 container 等。
kubectl: 用来与集群通信的命令行工具
#配置kubernetes yum repo源
cat <<EOF > /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
EOF
#执行下载
yum install kubeadm kubectl kubelet -y
(kubelet要设置开机自启动)
K8s Master节点配置
准备镜像文件
#查看kubeadm版本
kubeadm version
#查看用到的镜像
kubeadm config images list
kubeadm init --image-repository registry.aliyuncs.com/google_containers --service-cidr=10.233.0.0/16 --pod-network-cidr=10.244.0.0/16
#按照初始化提示操作
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
### kubeadm join 192.168.10.200:6443 --token ksfh08.491n64xinf4cwpij --discovery-token-ca-cert-hash sha256:1320112d6bb57d3cd1005858c9008b49989c941b17dd78af7aa751c0c54a5854
#$# 可以通过 openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //' 查看到
###参考 https://blog.csdn.net/weixin_44256791/article/details/85256551
可用网络插件列表:https://kubernetes.io/docs/concepts/cluster-administration/addons/
Calico 插件安装:https://docs.projectcalico.org/v3.11/getting-started/kubernetes/
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
kubectl get pods -A 或者 kubectl get pod -n kube-system
#检查节点已经ready
kubectl get node
##取消master的taint
kubectl taint nodes --all node-role.kubernetes.io/master-
此时可以进行创建pod测试了
增加节点
其他节点已经初始化好了环境并且安装了必要的包
再其他节点执行
kubeadm join 192.168.10.200:6443 --token ksfh08.491n64xinf4cwpij --discovery-token-ca-cert-hash sha256:1320112d6bb57d3cd1005858c9008b49989c941b17dd78af7aa751c0c54a5854
等待一会在主节点执行kubectl get node 会看到节点都变成ready状态了
重新定义roles角色
直接把节点打上label标签
kubectl label node node01.xyh.com node-role.kubernetes.io/node
测试部署应用:
略
======================================================
监控部分
使用https://github.com/prometheus-operator/kube-prometheus/ 项目
解压到master节点,进入解压目录后执行如下命令:
kubectl create -f manifests/setup kubectl create -f manifests/
until kubectl get servicemonitors --all-namespaces ; do date; sleep 1; echo ""; done
等待服务创建完成
kubectl get pod -n monitoring -owide
修改svc端口,让外部可以访问
prometheus 端口 30090
kubectl edit svc prometheus-k8s -n monitoring
填入 container_fs_usage_bytes 并执行 ,有数据返回即可
grafana对外端口修改 30300
kubectl edit svc grafana -n monitoring
最终dashboard视图