kubernetes(centos)

1、安装Docker

请在三台机器上安装docker,执行下面的命令即可

查看系统内核版本信息:

uname -r

卸载旧版本:

yum remove docker docker-common docker-selinux docker-engine
yum remove docker-ce

卸载后将保留 /var/lib/docker 的内容(镜像、容器、存储卷和网络等)

rm -rf /var/lib/docker
1.安装依赖软件包

yum install -y yum-utils device-mapper-persistent-data lvm2
#安装前可查看device-mapper-persistent-data和lvm2是否已经安装
rpm -qa|grep device-mapper-persistent-data
rpm -qa|grep lvm2

2.设置yum源

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

3.更新yum软件包索引

yum makecache fast

安装

安装最新版本docker-ce
yum install docker-ce -y #安装指定版本docker-ce可使用以下命令查看 yum list docker-ce.x86_64 --showduplicates | sort -r # 安装完成之后可以使用命令查看 docker version

配置镜像加速

1.注册登录开通阿里云容器镜像服务

2.查看控制台,招到镜像加速器并复制自己的加速器地址

3.找到/etc/docker目录下的daemon.json文件,没有则直接 vi 
daemon.json

4.加入以下配置

#填写自己的加速器地址
{
"registry-mirrors": ["https://zfzbet67.mirror.aliyuncs.com"]
}

5.通知systemd重载此配置文件;
systemctl daemon-reload

6.重启docker服务
systemctl restart docker

2、安装Kubernetes

1、基本环境

每个机器使用内网ip互通
每个机器配置自己的hostname,不能用localhost
三台机器设置hostname

#设置每个机器自己的hostname
hostnamectl set-hostname xxx
 
例如:
hostnamectl set-hostname master
hostnamectl set-hostname node1
hostnamectl set-hostname node2
基础设置(三台机器全部都要设置)

# 将 SELinux 设置为 permissive 模式(相当于将其禁用)
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
 
#关闭swap关闭分区
swapoff -a 
sed -ri 's/.*swap.*/#&/' /etc/fstab
 
#允许 iptables 检查桥接流量
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF
 
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sudo sysctl --system
2、安装kubelet、kubeadm、kubectl(三台机器全部都要设置)

#配置k8s的yum源地址
cat <<EOF | sudo tee /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
 
 
#安装 kubelet,kubeadm,kubectl
sudo yum install -y kubelet-1.20.9 kubeadm-1.20.9 kubectl-1.20.9
 
#启动kubelet
sudo systemctl enable --now kubelet
⚠️ 注意⚠️ : 三台机器同时写一个域名来配置master节点的ip地址
#所有机器配置master域名
echo "172.31.0.4  k8s-master" >> /etc/hosts
3、初始化master节点

1、初始化

⚠️ - apiserver-advertise-address = 你master节点的ip
⚠️ - control-plane-endpoint = 你上面配置的域名


kubeadm init \
--apiserver-advertise-address=172.31.0.4 \
--control-plane-endpoint=k8s-master \
--image-repository registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images \
--kubernetes-version v1.20.9 \
--service-cidr=10.96.0.0/16 \
--pod-network-cidr=192.168.0.0/16
2、记录关键信息

当前初始化完成之后将会输出下面的信息,记得保存到本地哦

⚠️下面的操作将用到这个输出的内容,下面的操作请不要复制我这里的命令,以自己的实际输出为准

Your Kubernetes control-plane has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

Alternatively, if you are the root user, you can run:

  export KUBECONFIG=/etc/kubernetes/admin.conf

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

You can now join any number of control-plane nodes by copying certificate authorities
and service account keys on each node and then running the following as root:

  kubeadm join k8s-master:6443 --token ajzsi9.y5h7yqpoxpyw7kqk \
    --discovery-token-ca-cert-hash sha256:07d800f2a5d7114dc3c42361b09f3e71ba836d9b5366e10252b852e507b099f3 \
    --control-plane 

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join k8s-master:6443 --token ajzsi9.y5h7yqpoxpyw7kqk \
    --discovery-token-ca-cert-hash sha256:07d800f2a5d7114dc3c42361b09f3e71ba836d9b5366e10252b852e507b099f3 
配置kubectl(第四步结尾输出步骤)

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

验证主节点是否安装完成

kubectl get nodes
⚠️ 注意⚠️ : 此处主节点已经安装好,后面安装子节点
⚠️ 注意⚠️ :引入子节点

重复上面的操作:

1、安装docker

2、安装kubernetes,但是不需要配置

3、执行kubernetes的master的下图命令
  在master主机验证节点是否加入到了集群

  kubectl get nodes

网络配置

 

查看kubernetes组件运行状态,发现有两个没有启动,这时候需要进行网络配置:

kubectl get pod -n kube-system -o wide

1、设置静态IP地址

#修改配置文件

vim /etc/sysconfig/network-scripts/ifcfg-ens33 

#进行修改

TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
IPADDR=192.168.50.130
NETMASK=255.255.255.0
GATEWAY=192.168.50.2
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="203e582b-6661-4aeb-9177-8a0a043e8499"
DEVICE="ens33"
ONBOOT="yes"

#重启网卡

systemctl restart network


2、设置DNS

修改NetworkManager.conf 配置文件
vi /etc/NetworkManager/NetworkManager.conf

#在[main]中添加
dns=no

修改resolv.conf配置文件
vim /etc/resolv.conf

#添加dns
nameserver 8.8.8.8

重启
systemctl restart NetworkManager

网关查询命令:

“route -n”或“ip route”或“netstat -rn”
至于容器之间为什么不能直接通信,参考docker第三节课内容

 Calico安装:

1.安装网络插件 Calico

#官方文档安装:https://docs.projectcalico.org/v3.20/getting-started/kubernetes/
#在Master操作即可
kubectl apply
-f https://docs.projectcalico.org/v3.20/manifests/calico.yaml

#验证是否成功 kubectl get pods --all-namespaces 在k8s上安装calico时报错: no matches for kind “PodDisruptionBudget“ in version “policy/v1“ #查看 kubernetes和Calico对应版本
https:
//projectcalico.docs.tigera.io/archive/v3.20/getting-started/kubernetes/requirements 删除:Calico 1、删除配置文件 kubectl delete -f calico.yaml
2、检查所有节点上的网络,看看是否存在Tunl0 ip addr show
3、删除Tunl0 modprobe -r ipip
4、移除Calico配置文件 ls /etc/cni/net.d/
5、看看是否存在Calico相关的文件和目录,如:10-calico.conflist, calico-kubeconfig, calico-tls,如果有将其移除。
#注意:如果启动不成功,很简单,在master把节点删除,重新设置node的kubeadm然后重启,然后重新加入集群。

健康检查:

命令:
kubectl get cs

出现以下问题:

 

  以下解决方式:

 

1.修改kube-scheduler.yaml文件

vim /etc/kubernetes/manifests/kube-scheduler.yaml

 

2.修改kube-controller-manager.yaml文件

vim /etc/kubernetes/manifests/kube-controller-manager.yaml

 

修改完成以后:

3.每台master重启kubelet

systemctl restart kubelet.service

4.再次查看状态

kubectl get cs

实例:运行Tomcat容器

1.健康检查

kubectl get cs
#输出
NAME STATUS MESSAGE ERROR
scheduler Healthy ok
controller-manager Healthy ok
etcd-0 Healthy {"health":"true"}
#scheduler调度服务,主要作用是将 POD 调度到 Node #controller
-manage自动化修复服务,主要作用是 Node 宕机后自动修复 Node 回到正常的工作状态 #etcd-0服务注册与发现

master apiserver node runtime kubelet kube
-proxy node1 node2
2.查看master状态 kubectl cluster-info
3.查看node状态 kubectl get nodes
4.运行tomcat容器 #使用kubectl命令创建两个监听8080端口的tomcat pod(Kubernetes运行容器的最小单元) kubectl create deployment tomcat --image=tomcat

#查看pod状态 kubectl get pods
#查看已部署的服务 kubectl
get deployment
#映射服
kubectl expose deploy tomcat --port=8080 --type=NodePort

#查看已经发布的服务 kubectl
get services
#查看服务详情 kubectl describe service tomcat
5.访问
6.停止服务并删除 kubectl delete deployment tomcat kubectl delete service tomcat
删除节点
kubectl delete node  "节点名字"


上图情况,将节点删除之后重新安装

 

posted @ 2022-07-02 21:29  VNone  阅读(101)  评论(0)    收藏  举报