kubernetes部署安装(详解and避坑and最新)完整!亲测!

**部署规划**

准备三台服务器(小编使用的是CentOS 7)

192.168.220.24 master
192.168.220.25 node1
192.168.220.26 node2

备注:第1~8步和第10步为公共步骤,各主机均需执行

1、设置主机名,并重启 && 时间同步配置 && 配置ssh节点互信

#每台主机设置主机名
vi /etc/hosts
192.168.220.24	master
192.168.220.25	node1
192.168.220.26	node2
reboot
#时间同步配置
yum -y install chrony
systemctl enable chronyd.service && systemctl start chronyd.service && systemctl status chronyd.service
chronyc sources
#配置节点间ssh互信;那么节点之间就能无密访问,方便日后执行自动化部署
ssh-keygen     # 每台机器执行这个命令, 一路回车即可 
ssh-copy-id  node      # 在master上拷贝公钥到其他节点,这里需要输入yes和密码

2、关闭linux防火墙

#关闭防火墙
systemctl stop firewalld
#设置防火墙开机不启动
systemctl disable firewalld
#查看防火墙状态
systemctl status firewalld

3、关闭selinux防火墙

#永久关闭selinux,将SELINUX=enforcing修改为disabled
vi /etc/selinux/config
SELINUX=disabled
#重启系统
reboot
#查看selinux的状态
/usr/sbin/sestatus
SELinux status:                 disabled

4、关闭swap自动挂载

#修改 /etc/fstab 文件,注释掉 SWAP 的自动挂载,即注释/dev/mapper/centos-swap这行
vi  /etc/fstab
#修改/etc/sysconfig/kubelet:
vi /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--fail-swap-on=false"

kubernetes部署安装(详解and避坑and最新)完整!亲测!_第1张图片5、安装docker

#	1)下载并安装
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O/etc/yum.repos.d/docker-ce.repo
yum -y install docker-ce-18.06.1.ce-3.el7
#	2)设置开机启动
systemctl enable docker
systemctl start docker
#	3)查看Docker版本
docker --version
Docker version 18.06.1-ce, build e68fc7a
#	4)添加阿里云仓库加速(阿里云-》容器镜像服务-》镜像加速   该路径下获取)
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
     
  "registry-mirrors": ["https://76rdsfoe.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker
#登录docker(阿里云-》容器镜像服务-》访问凭证,该路径下设定固定密码,用作登录docker)
sudo docker login --username=jeffii registry.cn-hangzhou.aliyuncs.com
#紧接着,输入密码你刚设置的密码即可。若一下拉取镜像时提示connect refused的话,可重新登录下docker

6、添加阿里云kubernetes的yum软件源

#第一步:创建kubernetes.repo
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=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
#依次执行一下语句
wget https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
rpm --import yum-key.gpg
wget https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
rpm --import rpm-package-key.gpg
#更新下缓存
yum clean all  
yum makecache  
#查看已安装的yum源
yum repolist

kubernetes部署安装(详解and避坑and最新)完整!亲测!_第2张图片

#下载常用工具包
yum install vim bash-completion net-tools gcc -y

注意:通过代理方式加载国内源(坑之一)

#学习马哥视频中是需要做以下配置,但我操作过程中,发现通过这种配置拉取不了kubeadm镜像
#vi /usr/lib/systemd/system/docker.service
#Environment="HTTPS_PROXY=http://www.ik8s.io:10080"
#Environment="NO_PROXY=127.0.0.0/8,172.20.0.0/16"
#systemctl daemon-reload
#systemctl restart docker
#docker info

kubernetes部署安装(详解and避坑and最新)完整!亲测!_第3张图片kubernetes部署安装(详解and避坑and最新)完整!亲测!_第4张图片
注意:需要打开ip6、ip桥接功能,否则后续报错

#查看以下配置文件值是否为1
more /proc/sys/net/bridge/bridge-nf-call-iptables
more /proc/sys/net/bridge/bridge-nf-call-ip6tables
#若以上语句打印结果为0则执行一下语句 
echo "1" >/proc/sys/net/bridge/bridge-nf-call-iptables
echo "1" >/proc/sys/net/bridge/bridge-nf-call-ip6tables 

8、各节点进行安装kubelet、kubeadm、kubectl

#安装以下三个组件
yum install kubelet kubeadm kubectl
#设置kubelet开机自启动
systemctl enable kubelet

9、部署Kubernetes Mstaer节点上
9.1使用kubeadm init初始化集群

#apiserver-advertise-address此ip为你设置的主节点的ip地址
kubeadm init --kubernetes-version=1.18.0  \
--apiserver-advertise-address=192.168.220.24   \
--image-repository registry.aliyuncs.com/google_containers  \
--service-cidr=10.10.0.0/16 --pod-network-cidr=10.122.0.0/16

kubernetes部署安装(详解and避坑and最新)完整!亲测!_第5张图片出现上图说明初始化成功!!!
9.2验证测试
配置kubectl命令

mkdir -p /root/.kube
cp /etc/kubernetes/admin.conf /root/.kube/config

获取pods列表命令

kubectl get pods --all-namespaces
#执行结果显示kube-system coredns为pending状态,可先不管

查看各组件健康状态命令

kubectl get cs

在这里插入图片描述以上,可知scheduler&&controller-manager组件状态不健康。若健康则不用执行下面的步骤

#step1:编辑以下两个配置文件,删除掉--port=0这行
vi /etc/kubernetes/manifests/kube-scheduler.yaml
vi /etc/kubernetes/manifests/kube-controller-manager.yaml
#step2:重启kubelet服务
systemctl restart kubelet
#step3:再次查看组件健康状态
kubectl get cs

kubernetes部署安装(详解and避坑and最新)完整!亲测!_第6张图片kubernetes部署安装(详解and避坑and最新)完整!亲测!_第7张图片
查看节点启动状态

kubectl get nodes

kubernetes部署安装(详解and避坑and最新)完整!亲测!_第8张图片
此时,主节点状态NotReady,因为主节点未安装网络插件,无网络,各节点无法相互通信。

10、部署flannel网络组件(集群各节点都要做)
flannel组件连通每个Kubernetes节点
拉取镜像

# 手动拉取flannel的docker镜像,在~目录下操作即可
docker pull easzlab/flannel:v0.11.0-amd64
# 修改镜像名称,因kube-flannel.yml配置文件中使用到的镜像名是下面后者
docker tag easzlab/flannel:v0.11.0-amd64 quay.io/coreos/flannel:v0.11.0-amd64

下载flannel资源配置清单

[root@master ~]# wget  https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
安装flannel
[root@master ~]# kubectl apply -f kube-flannel.yml 
podsecuritypolicy.policy/psp.flannel.unprivileged configured
clusterrole.rbac.authorization.k8s.io/flannel created
clusterrolebinding.rbac.authorization.k8s.io/flannel created
serviceaccount/flannel created
configmap/kube-flannel-cfg created
daemonset.apps/kube-flannel-ds-amd64 created
daemonset.apps/kube-flannel-ds-arm64 created
daemonset.apps/kube-flannel-ds-arm created
daemonset.apps/kube-flannel-ds-ppc64le created
daemonset.apps/kube-flannel-ds-s390x created

若安装不成功,需修改下kube-flannel.yml文件的镜像版本(因为kube-flannel.yml中镜像版本是12的,而flannelv0.12.0-amd64版本无法下载,所以我使用的是11的版本,需要将此处也修改为11)
kubernetes部署安装(详解and避坑and最新)完整!亲测!_第9张图片
flannel部署成功后

kubectl get nodes
kubectl get pods -n kube-system

kubernetes部署安装(详解and避坑and最新)完整!亲测!_第10张图片在node节点上输入kubectl相关指令有如下提示

[root@node01 kubernetes]# kubectl get pods -n kube-system
The connection to the server localhost:8080 was refused - did you specify the right host or port?

解决办法

#将主节点中的【/etc/kubernetes/admin.conf】文件拷贝到从节点相同目录下,然后配置环境变量
#拷贝到node01节点(主节点操作)
scp /etc/kubernetes/admin.conf node02:/etc/kubernetes/
#配置环境变量
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
#立即生效
source ~/.bash_profile
#再运行kubectl就不会提示错误了

11、将node节点加入集群

#以下语句可在kubeadm初始化成功的最后一段截取
kubeadm join 192.168.220.24:6443 --token rvxs2b.pun13z9vffgtvrsb --discovery-token-ca-cert-hash sha256:243aeb548771b1eb40def1a7ed714c03769eb13d0a1cfafbd2cfb4d0d10e8ccf

#token ID的获取,在主节点上操作
kubeadm token create
#sha证书摘要
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
#以下是打印结果
243aeb548771b1eb40def1a7ed714c03769eb13d0a1cfafbd2cfb4d0d10e8ccf

在这里插入图片描述
以上将node节点成功加入集群后,可查看到以下的节点状态

#查看节点信息,此时会看到node01,node02节点上ROLES的值为
kubectl get nodes
#node01,node02节点添加node角色
kubectl label node node01 node-role.kubernetes.io/node=node
kubectl label node node02 node-role.kubernetes.io/node=node
#再次核查node节点信息
kubectl get nodes

kubernetes部署安装(详解and避坑and最新)完整!亲测!_第11张图片
到此,kubernetes的基本部署就已经完成了,各位小伙伴们可以准备进一步学习啦!!!有问题欢迎提问

你可能感兴趣的:(k8s,容器,kubernetes,运维,docker)