adm单master节点
K8S角色 | ip | 主机名 |
---|---|---|
控制节点 | 192.168.8.60 | master |
工作节点 | 192.168.8.61 | node1 |
工作节点 | 192.168.8.62 | node2 |
VIP | 192.168.8.199 |
环境软件安装:
yum install -y yum-utils device-mapper-persistent-data lvm2 wget net-tools nfs-utils lrzsz gcc gcc-c++ make cmake libxml2-devel openssl-devel curl curl-devel unzip sudo ntp libaio-devel wget vim ncurses-devel autoconf automake zlib-devel python-devel epel-release openssh-server socat ipvsadm conntrack ntpdate telnet rsync
1,配置静态ip
2,修改主机名
hostnamectl set-hostname master
3,配置hosts解析,添加
cat > /etc/hosts << EOF
192.168.8.10 master
192.168.8.11 node1
192.168.8.12 node2
EOF
4,关闭交换分区
sed -ri 's/.*swap.*/#&/' /etc/fstab
swapoff -a
5,关闭selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
6,关闭防火墙
systemctl stop firewalld ; systemctl disable firewalld
7,修改内核参数
modprobe br_netfilter
#验证模块是否加载成功:
lsmod |grep br_netfiltercat > /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF#设置开机自启动
cat > /etc/rc.sysinit << EOF
#!/bin/bash
for file in /etc/sysconfig/modules/*.modules ; do
[ -x \$file ] && \$file
done
EOF
echo "modprobe br_netfilter" >/etc/sysconfig/modules/br_netfilter.modules
chmod 755 /etc/sysconfig/modules/br_netfilter.modules#使刚才修改的内核参数生效
sysctl -p /etc/sysctl.d/k8s.conf
安装软件源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repoeple源
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repok8s源
cat <<EOF> /etc/yum.repos.d/kubernetes.repo
[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 ntp ntpdate
ntpdate cn.pool.ntp.org #配置时间同步脚本
(crontab -l;echo "* */1 * * * /usr/sbin/ntpdate cn.pool.ntp.org > /dev/null 2>&1 ") | crontab
systemctl restart crond
开启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_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>&1if [ 0 -eq 0 ]; then/sbin/modprobe \${kernel_module}fi
done
EOFchmod 755 /etc/sysconfig/modules/ipvs.modules
bash /etc/sysconfig/modules/ipvs.modules
lsmod | grep ip_vs
关闭iptabls
yum install iptables-services -y
#禁用iptables
service iptables stop && systemctl disable iptables
安装docker
yum install docker-ce docker-ce-cli containerd.io -y
systemctl start docker && systemctl enable docker.service && systemctl status docker
配置docker镜像加速
tee /etc/docker/daemon.json << 'EOF'
{"registry-mirrors":["https://rsbud4vc.mirror.aliyuncs.com","https://registry.docker-cn.com","https://docker.mirrors.ustc.edu.cn","https://dockerhub.azk8s.cn","http://hub-mirror.c.163.com","http://qtid6917.mirror.aliyuncs.com", "https://rncxm540.mirror.aliyuncs.com"],"exec-opts": ["native.cgroupdriver=systemd"]
}
EOF##修改docker文件驱动为systemd,默认为cgroupfs,kubelet默认使用systemd,两者必须一致才可以。
"exec-opts": ["native.cgroupdriver=systemd"]systemctl daemon-reload
systemctl restart docker
systemctl status docker
安装k8s组件
yum install -y kubelet-1.20.6 kubeadm-1.20.6 kubectl-1.20.6systemctl enable kubelet && systemctl start kubeletsystemctl status kubelet
Kubeadm: kubeadm是一个工具,用来初始化k8s集群的
kubelet: 安装在集群所有节点上,用于启动Pod的
kubectl: 通过kubectl可以部署和管理应用,查看各种资源,创建、删除和更新各种组件
初始化k8s集群:master操作
kubeadm init --kubernetes-version=1.20.6 --apiserver-advertise-address=192.168.8.60 --image-repository registry.aliyuncs.com/google_containers --pod-network-cidr=10.244.0.0/16 --ignore-preflight-errors=SystemVerification注:--image-repository registry.aliyuncs.com/google_containers:手动指定仓库地址为registry.aliyuncs.com/google_containers。kubeadm默认从k8s.grc.io拉取镜像,但是k8s.gcr.io访问不到,所以需要指定从registry.aliyuncs.com/google_containers仓库拉取镜像。
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
添加工作节点
看加入节点的命令:kubeadm token create --print-join-command#打标签kubectl label node node1 node-role.kubernetes.io/worker=worker
kubectl tab补全
yum install -y bash-completion
vim ~/.bashrc
添加
source <(kubectl completion bash)
之后退出连接后再
安装calico
注:在线下载配置文件地址是: https://docs.projectcalico.org/manifests/calico.yaml
请自行下载后使用
kebectl apply -f calico.yaml
kubectl get pods -n kube-system 查看是否启动
测试
1,测试容器是否可以访问百度
kubectl run busybox --image busybox:1.28 --restart=Never --rm -it busybox -- sh
ping baidu.com 测试下是否calico部署成功2,测试tomcat是否可以运行
vim tomcat.yaml
apiVersion: v1 #pod属于k8s核心组v1
kind: Pod #创建的是一个Pod资源
metadata: #元数据name: demo-pod #pod名字namespace: default #pod所属的名称空间labels:app: myapp #pod具有的标签env: dev #pod具有的标签
spec:containers: #定义一个容器,容器是对象列表,下面可以有多个name- name: tomcat-pod-java #容器的名字ports:- containerPort: 8080image: tomcat:8.5-jre8-alpine #容器使用的镜像imagePullPolicy: IfNotPresentvim tomcat-service.yaml
apiVersion: v1
kind: Service
metadata:name: tomcat
spec:type: NodePortports:- port: 8080nodePort: 30080selector:app: myappenv: dev
保存退出
kubectl apply -f tomcat.yaml
kubectl apply -f tomcat-service.yaml
kubectl get svc
在浏览器访问master节点的ip:30080即可请求到浏览器3,测试coredns是否正常
kubectl run busybox --image busybox:1.28 --restart=Never --rm -it busybox -- sh
nslookup kubernetes.default.svc.cluster.local
安装dashboard
kubectl apply -f kubernetes-dashboard.yaml
上传yaml直接启动查看状态
kubectl get pods -n kubernetes-dashboard查看svc
kubectl get svc -n kubernetes-dashboard#修改service type类型变成NodePortkubectl edit svc kubernetes-dashboard -n kubernetes-dashboard
把type: ClusterIP变成 type: NodePort,保存退出即可。kubectl get svc -n kubernetes-dashboard
上面可看到service类型是NodePort,访问任何一个工作节点ip: 32728端口即可访问kubernetes dashboard,在浏览器(使用火狐浏览器)访问如下地址:
#通过Token登陆dashboard
创建管理员token,具有查看任何空间的权限,可以管理所有资源对象
kubectl create clusterrolebinding dashboard-cluster-admin --clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:kubernetes-dashboard查看kubernetes-dashboard名称空间下的secret
kubectl get secret -n kubernetes-dashboard找到对应的带有token的kubernetes-dashboard-token-(pod名称随机)
kubectl describe secret kubernetes-dashboard-token-zvjz5 -n kubernetes-dashboard
记住token后面的值,把下面的token值复制到浏览器token登陆处即可登陆:
通过kubeconfig文件访问dashboard
cd /etc/kubernetes/pki1,创建cluster集群kubectl config set-cluster kubernetes --certificate-authority=./ca.crt --server="https://IP:6443" --embed-certs=true --kubeconfig=/root/dashboard-admin.conf
cat /root/dashboard-admin.conf2,创建credentials#查看dashboard的token podkubectl get secret -n kubernetes-dashboard DEF_NS_ADMIN_TOKEN=$(kubectl get secret kubernetes-dashboard-token-v55cq -n kubernetes-dashboard -o jsonpath={.data.token}|base64 -d)kubectl config set-credentials dashboard-admin --token=$DEF_NS_ADMIN_TOKEN --kubeconfig=/root/dashboard-admin.confcat /root/dashboard-admin.conf 3,创建context
kubectl config set-context dashboard-admin@kubernetes --cluster=kubernetes --user=dashboard-admin --kubeconfig=/root/dashboard-admin.confcat /root/dashboard-admin.conf 4、切换context的current-context是dashboard-admin@kubernetes
kubectl config use-context dashboard-admin@kubernetes --kubeconfig=/root/dashboard-admin.confcat /root/dashboard-admin.conf 5、把刚才的kubeconfig文件dashboard-admin.conf复制到桌面
浏览器访问时使用kubeconfig认证,把刚才的dashboard-admin.conf导入到web界面,那么就可以登陆了
安装metrics-server组件
metrics-server是一个集群范围内的资源数据集和工具,同样的,metrics-server也只是显示数据,并不提供数据存储服务,主要关注的是资源度量API的实现,比如CPU、文件描述符、内存、请求延时等指标,metric-server收集数据给k8s集群内使用,如kubectl,hpa,scheduler等#在/etc/kubernetes/manifests里面改一下apiserver的配置
#注意:这个是k8s在1.17的新特性,如果是1.16版本的可以不用添加,1.17以后要添加。这个参数的作用是Aggregation允许在不修改Kubernetes核心代码的同时扩展Kubernetes API。vim /etc/kubernetes/manifests/kube-apiserver.yaml
增加如下内容: 在 - command: 的 - kube-apiserve下面添加
- --enable-aggregator-routing=truekubectl apply -f /etc/kubernetes/manifests/kube-apiserver.yamlkubectl get pods -n kube-system#把CrashLoopBackOff状态的pod删除
kubectl delete pods kube-apiserver -n kube-system自行寻找metrics.yaml
kubectl apply -f metrics.yaml 使用方式:
kubectl top pods -n kube-system
kubectl top nodes
把scheduler、controller-manager端口变成物理机可以监听的端口
kubectl get cs #cs意思是:ComponentStatus#scheduler
vim /etc/kubernetes/manifests/kube-scheduler.yaml
删除: - --port=0
把所有的127.0.0.1 都修改为本机ipvim /etc/kubernetes/manifests/kube-controller-manager.yaml
删除: - --port=0
把所有的127.0.0.1 都修改为本机ip修改之后在k8s各个节点重启下kubelet
systemctl restart kubelet
adm单master节点相关推荐
- K8S——单master节点和基于单master节点的双master节点二进制部署(本机实验,防止卡顿,所以多master就不做3台了)
K8S--单master节点和基于单master节点的双master节点二进制部署 一.准备 二.ETCD集群 1.master节点 2.node节点 三.Flannel网络部署 四.测试容器间互通 ...
- 【重要】kubernetes二进制部署单master节点
目录 1.安装要求 2.安装规划 3.1.分步骤操作 3.2.一键执行脚本 4.1.安装cfssl证书生成工具 4.2.创建认证中心(根CA中心) 4.3.使用自签CA签发Etcd证书 4.4.部署E ...
- kubernetes二进制部署单master节点
目录 1.安装要求 2.安装规划 3.1.分步骤操作 3.2.一键执行脚本 4.1.安装cfssl证书生成工具 4.2.创建认证中心(根CA中心) 4.3.使用自签CA签发Etcd证书 4.4.部署E ...
- 【K8S】基于单Master节点安装K8S集群
写在前面 最近在研究K8S,今天就输出部分研究成果吧,后续也会持续更新. 集群规划 IP 主机名 节点 操作系统版本 192.168.175.101 binghe101 Master CentOS 8 ...
- 基于阿里云镜像源使用kubeadm安装k8s单master节点集群(v1.17.3)
一.环境准备 1.系统要求 按量付费阿里云主机三台 要求:centos7.6~7.8:以下为 https://kuboard.cn/install/install-k8s.html#%E6%A3%80 ...
- yum安装k8s集群(单master两个node、阿里云镜像源)
yum安装k8s集群(单master节点方式) 一.环境准备 1.系统要求 按量付费阿里云主机三台 要求:centos7.6~7.8:以下为 https://kuboard.cn/install/in ...
- Kubernetes 集群部署 之 多Master节点 实现高可用
目录 前言 一.K8s Master 高可用架构 二.在单Master节点基础上搭建 多Master集群架构 2.1 环境准备 与 搭建步骤 2.2 首先部署 Master02 节点 2.2.1 从 ...
- Kubernetes------二进制双master节点集群部署
前文环境中完成k8s单master节点集群架构部署,两个node节点都已加入集群中,完成与master节点的通信.本文在前文基础下,再加入一个master节点,同时加入nginx负载均衡+keepal ...
- k8s1.18多master节点高可用集群安装-超详细中文官方文档
kubernetes安装系列文章 kubernetes1.17.3安装-超详细的安装步骤 安装kubernetes1.17.3多master节点的高可用集群 k8s1.18单master节点高可用集群 ...
- kubernetes单Master集群部署--Node节点部署组件(6)
1.kubelet组件授权 Master apiserver启用TLS认证后,Node节点kubelet组件想要加入集群,必须使用CA签发的有效证书才能与apiserver通信,当Node节点很多时, ...
最新文章
- oracle有一百个人围一圈报数,案例:Oracle创建表时报session超过最大值 ORA-00018 证明递归ses...
- Qt开发,图文详解Hello World全过程
- SQL2005中利用PIVOT实现分组统计
- 简单实现支付密码输入框 By HL
- TF之AutoML之AdaNet框架:AdaNet框架的简介、特点、使用方法详细攻略
- 告别加班:一个让你不再重复工作的技能
- 游戏编程性能优化--------------------------------------------------------------------------------------...
- c#中Task线程的用法
- python学习笔记(七):面向对象编程、类
- Maven 设置本地仓库的地址
- win10安装影子系统,导致电脑无限蓝屏,解决总结
- 车标识别 深度学习车标识别 神经网络车标识别 cnn车标识别 目标检测 yolo识别
- 小猪短租住房信息爬取
- HTML5七夕情人节表白网页抖音超火的樱花雨3D相册 HTML+CSS+JavaScript
- 英语学习之沪江整理 20141101
- Spark开发实用技巧-从入门到爱不释手
- 本地代码推到远程仓库——gitee
- 华为云服务器安全组端口开发
- chi square-卡方分布的定义及性质
- Flash Remoting