docker v19.03.15
Centos 8 安装docker_centos8安装docker_一般等价物(污妖王)的博客-CSDN博客
节点 | IP | 主机名 |
master | 192.168.110.251 | test251 |
node1 | 192.168.110.252 | test252 |
node2 | 192.168.110.253 | test253 |
vim /etc/hosts
云服务器部署需要开放以下端口(测试环境如无安全限制,可忽略)
master节点:TCP端口:6443,2379,2380,60080,60081
UDP端口全开
node节点 :UDP端口全开
firewall-cmd --zone=public --add-port=6443/tcp --permanent
firewall-cmd --zone=public --add-port=2379/tcp --permanent
firewall-cmd --zone=public --add-port=2380/tcp --permanent
firewall-cmd --zone=public --add-port=60080/tcp --permanent
firewall-cmd --zone=public --add-port=60081/tcp --permanent
firewall-cmd --zone=public --add-port=10250/tcp --permanent
firewall-cmd --reload
yum install -y conntrack ntpdate ntp ipvsadm ipset jq iptables curl sysstatlibseccomp wget vim net-tools git iproute lrzsz bash-completion tree bridge-utils unzip bind-utils gcc
# 关闭防火墙(生产环境建议使用放行端口)
systemctl stop firewalld && systemctl disable firewalld
# 置空iptables (生产环境别执行)
yum -y install iptables-services && systemctl start iptables && systemctl enable iptables && iptables -F && service iptables save
# 关闭swap分区【虚拟内存】并且永久关闭虚拟内存
swapoff -a && sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
# 关闭selinux
setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
cat > kubernetes.conf <
#将优化内核文件拷贝到/etc/sysctl.d/文件夹下,这样优化文件开机的时候能够被调用
cp kubernetes.conf /etc/sysctl.d/kubernetes.conf
#手动刷新,让优化文件立即生效
sysctl -p /etc/sysctl.d/kubernetes.conf
#设置系统时区为中国/上海
timedatectl set-timezone "Asia/Shanghai"
#将当前的UTC 时间写入硬件时钟
timedatectl set-local-rtc 0
#重启依赖于系统时间的服务
systemctl restart rsyslog
systemctl restart crond
systemctl stop postfix && systemctl disable postfix
# 创建保存日志的目录
mkdir /var/log/journal
# 创建配置文件存放目录
mkdir /etc/systemd/journald.conf.d
# 创建配置文件
cat > /etc/systemd/journald.conf.d/99-prophet.conf <
echo "* soft nofile 65536" >> /etc/security/limits.conf
echo "* hard nofile 65536" >> /etc/security/limits.conf
modprobe br_netfilter
cat > /etc/sysconfig/modules/ipvs.modules <
# 使用lsmod命令查看这些文件是否被引导
chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4
# 国内镜像配置(国内建议配置)
cat < /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
# 查看kubeadm可用版本
yum list -y kubeadm --showduplicates|grep 1.19
# 安装1.19.16版本
yum install -y kubeadm-1.19.16-0 kubectl-1.19.16-0 kubelet-1.19.16-0
# 如果安装报错,卸载后重装
yum remove -y kubelet kubeadm kubectl
# kubelet开机启动
systemctl enable kubelet && systemctl start kubelet
我将配置文件放在 /data/k8s文件夹中,所以先创建文件夹
# 创建
mkdir /data/k8s -p
cd /data/k8s
kubeadm config print init-defaults > kubeadm-init.yaml
A、将advertiseAddress: 1.2.3.4
修改为本机地址,我这里是
advertiseAddress:
192.168.110.251
B、将imageRepository: k8s.gcr.io
修改为
imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers
C、新增pod子网络
podSubnet: 10.244.0.0/16
修改后配置文件如下图
kubeadm config images pull --config kubeadm-init.yaml
kubeadm init --config kubeadm-init.yaml
# 直接执行脚本,效果同2.1到2.3
kubeadm init \
--apiserver-advertise-address=192.168.110.251 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.19.16 \
--service-cidr=10.96.0.0/16 \
--pod-network-cidr=10.244.0.0/16 \
--service-dns-domain=cluster.local \
--ignore-preflight-errors=Swap \
--ignore-preflight-errors=NumCPU
出现下面的信息表示安装成功
# 配置kubectl执行命令环境
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
# 启用 kubectl 命令自动补全功能
yum install -y bash-completion
source /usr/share/bash-completion/bash_completion
kubectl completion bash | sudo tee /etc/bash_completion.d/kubectl > /dev/null
echo 'source <(kubectl completion bash)' >> ~/.bashrc
source ~/.bashrc
# 下载Calico配置文件
wget https://docs.projectcalico.org/v3.20/manifests/calico.yaml
# 编辑calico.yaml
vim calico.yaml
搜索关键字CLUSTER_TYPE,在它下面增加网卡配置
# IP automatic detection
- name: IP_AUTODETECTION_METHOD
value: "interface=en.*"
构建Calico网络
kubectl apply -f calico.yaml
然后等。。。。
用 kubectl get po -n kube-system 查看状态
kubectl get po -n kube-system
状态都是Running,表示安装成功
下载Flannel源码zip包,我这里是0.19.2版本
Release v0.19.2 · flannel-io/flannel · GitHub
解压
# 解压
unzip flannel-0.19.2.zip
# 进入文件夹
cd ./flannel-0.19.2/Documentation
# 修改配置文件kube-flannel.yml
vim kube-flannel.yml
NetWork改成和脚本中pod-network-cidr一致
添加一行宿主机网卡名称,我的是ens33
执行安装
# 安装flannel
kubectl create -f ./kube-flannel.yml
# 这是2.3里面的代码,根据自己情况复制粘贴,这个是我的
kubeadm join 192.168.110.251:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:5150588f09a9f1c8538cc67262a1f788fd0b6c0073c7c9357c467312b2a1f69b
PS:如果上面的代码忘了
# 先执行
kubeadm token list
1、如果有数据
# 如果有结果,则执行
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
# 将看到的sha256带入命令
kubeadm join 192.168.110.251:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:<看到的sha256>
2、如果没有数据
# 重新生成一个
kubeadm token create --print-join-command
然后每个节点重新执行一次
查看加入状态
kubectl get node
# 下载配置文件
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.5/aio/deploy/recommended.yaml
添加暴露端口
修改好的yaml文件https://pan.baidu.com/s/1sd_1GYiQWcXbiWPpu13uZA?pwd=6666
如果1.5没有清空iptables,需要做如下配置(所有服务器都要执行)
# 如果1.5没有置空iptables,需要设置
iptables-save > iptables.rules
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -F
安装dashboard
# 执行安装
kubectl apply -f recommended.yaml
# 查看安装情况
kubectl get po,svc -n kubernetes-dashboard
创建dashboard-admin.yaml
cat > dashboard-admin.yaml << EOF
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: admin
annotations:
rbac.authorization.kubernetes.io/autoupdate: "true"
roleRef:
kind: ClusterRole
name: cluster-admin
apiGroup: rbac.authorization.k8s.io
subjects:
- kind: ServiceAccount
name: admin
namespace: kube-system
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin
namespace: kube-system
labels:
kubernetes.io/cluster-service: "true"
addonmanager.kubernetes.io/mode: Reconcile
EOF
创建登录用户
kubectl apply -f dashboard-admin.yaml
查看创建的用户
kubectl -n kube-system get secret|grep admin-token
查看token
# 查看所有信息
kubectl -n kube-system describe secret admin-token-jjhbw
# 直接查看token
kubectl -n kube-system get secret admin-token-jjhbw -o jsonpath={.data.token}|base64 -d
Over