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节点相关推荐

  1. K8S——单master节点和基于单master节点的双master节点二进制部署(本机实验,防止卡顿,所以多master就不做3台了)

    K8S--单master节点和基于单master节点的双master节点二进制部署 一.准备 二.ETCD集群 1.master节点 2.node节点 三.Flannel网络部署 四.测试容器间互通 ...

  2. 【重要】kubernetes二进制部署单master节点

    目录 1.安装要求 2.安装规划 3.1.分步骤操作 3.2.一键执行脚本 4.1.安装cfssl证书生成工具 4.2.创建认证中心(根CA中心) 4.3.使用自签CA签发Etcd证书 4.4.部署E ...

  3. kubernetes二进制部署单master节点

    目录 1.安装要求 2.安装规划 3.1.分步骤操作 3.2.一键执行脚本 4.1.安装cfssl证书生成工具 4.2.创建认证中心(根CA中心) 4.3.使用自签CA签发Etcd证书 4.4.部署E ...

  4. 【K8S】基于单Master节点安装K8S集群

    写在前面 最近在研究K8S,今天就输出部分研究成果吧,后续也会持续更新. 集群规划 IP 主机名 节点 操作系统版本 192.168.175.101 binghe101 Master CentOS 8 ...

  5. 基于阿里云镜像源使用kubeadm安装k8s单master节点集群(v1.17.3)

    一.环境准备 1.系统要求 按量付费阿里云主机三台 要求:centos7.6~7.8:以下为 https://kuboard.cn/install/install-k8s.html#%E6%A3%80 ...

  6. yum安装k8s集群(单master两个node、阿里云镜像源)

    yum安装k8s集群(单master节点方式) 一.环境准备 1.系统要求 按量付费阿里云主机三台 要求:centos7.6~7.8:以下为 https://kuboard.cn/install/in ...

  7. Kubernetes 集群部署 之 多Master节点 实现高可用

    目录 前言 一.K8s Master 高可用架构 二.在单Master节点基础上搭建 多Master集群架构 2.1 环境准备 与 搭建步骤 2.2 首先部署 Master02 节点 2.2.1 从 ...

  8. Kubernetes------二进制双master节点集群部署

    前文环境中完成k8s单master节点集群架构部署,两个node节点都已加入集群中,完成与master节点的通信.本文在前文基础下,再加入一个master节点,同时加入nginx负载均衡+keepal ...

  9. k8s1.18多master节点高可用集群安装-超详细中文官方文档

    kubernetes安装系列文章 kubernetes1.17.3安装-超详细的安装步骤 安装kubernetes1.17.3多master节点的高可用集群 k8s1.18单master节点高可用集群 ...

  10. kubernetes单Master集群部署--Node节点部署组件(6)

    1.kubelet组件授权 Master apiserver启用TLS认证后,Node节点kubelet组件想要加入集群,必须使用CA签发的有效证书才能与apiserver通信,当Node节点很多时, ...

最新文章

  1. oracle有一百个人围一圈报数,案例:Oracle创建表时报session超过最大值 ORA-00018 证明递归ses...
  2. Qt开发,图文详解Hello World全过程
  3. SQL2005中利用PIVOT实现分组统计
  4. 简单实现支付密码输入框 By HL
  5. TF之AutoML之AdaNet框架:AdaNet框架的简介、特点、使用方法详细攻略
  6. 告别加班:一个让你不再重复工作的技能
  7. 游戏编程性能优化--------------------------------------------------------------------------------------...
  8. c#中Task线程的用法
  9. python学习笔记(七):面向对象编程、类
  10. Maven 设置本地仓库的地址
  11. win10安装影子系统,导致电脑无限蓝屏,解决总结
  12. 车标识别 深度学习车标识别 神经网络车标识别 cnn车标识别 目标检测 yolo识别
  13. 小猪短租住房信息爬取
  14. HTML5七夕情人节表白网页抖音超火的樱花雨3D相册 HTML+CSS+JavaScript
  15. 英语学习之沪江整理 20141101
  16. Spark开发实用技巧-从入门到爱不释手
  17. 本地代码推到远程仓库——gitee
  18. 华为云服务器安全组端口开发
  19. chi square-卡方分布的定义及性质
  20. Flash Remoting

热门文章

  1. ES slop问题纪录
  2. ps怎么制作流体_如何在PS中制作流体效果的字体
  3. String 类 ( 看了包会 )
  4. 冒泡排序(Bubble Sort)含gif动图
  5. 年金系数用计算机怎么算,年金系数是什么?怎么计算?
  6. 艺多不压身—摩尔斯电码
  7. python调用若快打码接口
  8. php设计模式番外篇--超人的诞生
  9. 常用工具软件的交叉编译
  10. CentOS7通过SpeedTest工具网络测速