K8S专题-基础组件的部署1


前言

1.最好是手动

2.Docker安装

# 安装依赖软件包
yum install -y yum-utils device-mapper-persistent-data lvm2
# 添加Docker repository,这里使用国内阿里云yum源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安装docker-ce,这里直接安装最新版本
yum install -y docker-ce-19.03.5 docker-ce-cli-19.03.5
#修改docker配置文件
mkdir /etc/docker
cat > /etc/docker/daemon.json <<EOF
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2",
  "storage-opts": [
    "overlay2.override_kernel_check=true"
  ],
  "registry-mirrors": ["https://uyah70su.mirror.aliyuncs.com"]
}
EOF
# 注意,由于国内拉取镜像较慢,配置文件最后增加了registry-mirrors
mkdir -p /etc/systemd/system/docker.service.d
# 重启docker服务
systemctl daemon-reload
systemctl enable docker.service
systemctl start docker.service
ps -ef|grep -aiE docker
yum remove -y docker*
rm -rf /etc/systemd/system/docker.service.d
rm -rf /var/lib/docker
rm -rf /var/run/docker

3.K8S

准备三台2核4G的虚拟机(内存至少2G以上)

#1、关闭防火墙
systemctl stop firewalld
systemctl disable firewalld

#2、关闭 selinux
sed ‐i 's/enforcing/disabled/' /etc/selinux/config # 永久关闭
setenforce 0 # 临时关闭

#3、关闭 swap
swapoff ‐a # 临时关闭
vim /etc/fstab # 永久关闭
#注释掉swap这行
# /dev/mapper/centos‐swap swap swap defaults 0 0

systemctl reboot #重启生效
free ‐m #查看下swap交换区是否都为0,如果都为0则swap关闭成功

#4、给三台机器分别设置主机名
hostnamectl set‐hostname <hostname>
第一台:k8s‐master
第二台:k8s‐node1
第三台:k8s‐node2

hostnamectl set-hostname k8s-master
hostnamectl set-hostname k8s-node1
hostnamectl set-hostname k8s-node2

#5、在 k8s‐master机器添加hosts,执行如下命令,ip需要修改成你自己机器的ip
cat >> /etc/hosts << EOF
192.168.79.141 k8s‐master
192.168.79.142 k8s‐node1
192.168.79.143 k8s‐node2
EOF

#6、将桥接的IPv4流量传递到iptables
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge‐nf‐call‐ip6tables = 1
net.bridge.bridge‐nf‐call‐iptables = 1
EOF

sysctl --system # 生效 这个也要同时执行,每次重新启动

#7、设置时间同步 , 这个要特别小心,同时执行
yum install ntpdate -y
ntpdate time.windows.com


#8、添加k8s yum源
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=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
#https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
#更新缓存
yum clean all
rm -rf /var/cache/yum
yum -y makecache


#9、如果之前安装过k8s,先卸载旧版本
yum remove -y kubelet kubeadm kubectl

#10、查看可以安装的版本
yum list kubelet --showduplicates |sort -r

#11、安装kubelet、kubeadm、kubectl 指定版本,我们使用kubeadm方式安装k8s集群
yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0


#12、开机启动kubelet
systemctl enable kubelet
systemctl start kubelet
ps -ef|grep kubelet

在k8s-master机器上执行初始化操作(里面的第一个ip地址就是k8s-master机器的ip,改成你自己机器的,后面两个ip网段不用动)

kubeadm reset
#y

kubeadm init 之前kubelet会不断重启

rm -rf /var/lib/etcd
#删除污点
rm -rf /var/lib/kubelet/cpu_manager_state

kubeadm init --apiserver-advertise-address=192.168.79.141 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.18.0 --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16
#代表初始化成功
Your Kubernetes control-plane has initialized successfully!

#这段命令需要在master执行下
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config #config要注意啦
sudo chown $(id -u):$(id -g) $HOME/.kube/config
#kubectl get nodes

#这段命令需要在所有node节点上执行
kubeadm join 192.168.79.141:6443 --token jya5qv.rtbtwjmcwmxuek5l \
    --discovery-token-ca-cert-hash sha256:6490ce59854c187222b049884f2585ad79a56be07a29cb17649382acd4c04894  

在k8s-master机器上执行如下命令:

#配置使用 kubectl 命令工具(类似docker这个命令),执行上图第二个红框里的命令
mkdir -p $HOME/.kube#把原来创建的删掉
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config


#查看kubectl是否能正常使用
kubectl get nodes

#Ready

#安装 Pod 网络插件
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml


# 如果上面这个calico网络插件安装不成功可以试下下面这个
# kubectl apply ‐f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kubeflannel.yml

在所有k8s node机器执行上图第三个红框里的命令

kubeadm join 192.168.79.141:6443 --token jya5qv.rtbtwjmcwmxuek5l \
    --discovery-token-ca-cert-hash sha256:6490ce59854c187222b049884f2585ad79a56be07a29cb17649382acd4c04894

报错处理方法,其实主要是master机器的内存性能问题比较大,

尝试下将master的交换分区打开swapon -a,然后等完成上面的操作后,将master的交换分区关闭swapoff -a

rm -rf /etc/kubernetes/*
netstat -nltp|grep 10250
systemctl restart kubelet
netstat -nltp|grep 10250

tail /var/log/messages
journalctl -xeu kubelet

kubeadm token list

出现如上问题的主要原因是之前 kubeadm init 初始化过,所以一些配置文件及服务均已存在,重新执行 kubeadm join 时必然
会导致冲突,解决方法如下:

kubeadm reset
rm -rf /etc/kubernetes/*

rm -rf $HOME/.kube/config
rm -rf /var/lib/etcd
#初始化
kubeadm init --apiserver-advertise-address=192.168.79.141 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.18.0 --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16
#配置
mkdir -p $HOME/.kube #把原来创建的删掉
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

rm -rf /etc/kubernetes/*
systemctl restart kubelet
kubectl delete node k8s-master
systemctl status kubelet
systemctl start kubelet
kubeadm join 192.168.79.141:6443 --token jya5qv.rtbtwjmcwmxuek5l \
    --discovery-token-ca-cert-hash sha256:6490ce59854c187222b049884f2585ad79a56be07a29cb17649382acd4c04894 
#
kubeadm token generate

需要等待一段时间,才能Ready

在k8s-master机器执行查看节点命令

kubectl get nodes

刚刚安装的三个k8s节点都已经准备就绪,大功告成!

如果出现Not Ready,那么node

journalctl -u kubelet >> kubelet.log
systemctl daemon-reload
systemctl restart kubelet

三个节点必须都为Ready

用K8S部署Nginx
在k8s-master机器上执行

# 创建一次deployment部署
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
# 查看Nginx的pod和service信息
kubectl get pod,svc -o wide
service/nginx        NodePort    10.96.131.98   <none>        80:30299/TCP   29s   app=nginx
http://192.168.79.141:30299/

补充:如果node节点添加进集群失败,可以删除节点重新添加
要删除 k8s­node1 这个节点,首先在 master 节点上依次执行以下两个命令

kubectl drain k8s-node1 --delete-local-data --force --ignore-daemonsets
kubectl delete node k8s-node1

执行后通过 kubectl get node 命令可以看到 k8s­node1 已被成功删除
接着在 k8s­node1 这个 Node 节点上执行如下命令,这样该节点即完全从 k8s 集群中脱离开来,之后就可以重新执
行命令添加到集群

kubeadm reset

总结

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

低调的小哥哥

你的关注就是我为你服务的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值