前言:

结合此博客加上自己的实操,总结如下:

  1. 服务器版本: CentOS Linux release 7.9.2009 (Core)
  2. 安装前准备的1-7 步,安装K8S中的 1-4步,要在三个节点上同时操作

安装前准备

  1. 部署规划
192.168.8.106  k8s-master
192.168.8.186  k8s-node1
192.168.8.187  k8s-node2
  1. 修改 hostname
    master节点上操作:hostnamectl set-hostname k8s-master
    node1节点上操作: hostnamectl set-hostname k8s-node1
    node2节点上操作:hostnamectl set-hostname k8s-node2
  2. centos7 安装 kubectl客户端 centos7 k8s安装_重启


  3. centos7 安装 kubectl客户端 centos7 k8s安装_重启_02


  4. centos7 安装 kubectl客户端 centos7 k8s安装_ico_03

  5. 通过 cat /etc/hostname 可查看是否更改成功
  6. 关闭selinux(临时关闭:输入命令setenforce 0,重启系统后还会开启。)
setenforce 0

centos7 安装 kubectl客户端 centos7 k8s安装_ico_04


永久关闭:输入命令vi /etc/selinux/config,将SELINUX=enforcing改为SELINUX=disabled,然后保存退出。

  1. 关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service 
firewall-cmd --state

centos7 安装 kubectl客户端 centos7 k8s安装_ico_05


4. 设置host

vim /etc/hosts
192.168.8.106  k8s-master
192.168.8.186  k8s-node1
192.168.8.187  k8s-node2

可通过 cat /etc/hosts 查看是否修改成功

centos7 安装 kubectl客户端 centos7 k8s安装_docker_06

  1. 禁用swap
swapoff -a  #临时生效,重启失效
vim /etc/fstab  #永久禁用

centos7 安装 kubectl客户端 centos7 k8s安装_ico_07

mount -a  # 重新加载生效
  1. 将桥接的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

centos7 安装 kubectl客户端 centos7 k8s安装_kubernetes_08


7. 安装Docker

备份源

sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak

修改OS源为阿里的仓库

curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

安装常用命令

yum -y install conntrack ipvsadm ipset jq sysstat curl iptables libseccomp wget lrzsz nmap lsof net-tools zip unzip vim telnet

安装依赖项

yum install -y yum-utils device-mapper-persistent-data lvm2

安装Docker源为阿里

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

清理缓存

yum clean all

** 重新生成缓存**

yum makecache

再次查看yum源信息

yum repolist

centos7 安装 kubectl客户端 centos7 k8s安装_docker_09


我们安装18.06.3版本

sudo yum install docker-ce-18.06.3.ce-3.el7

安装完毕后,查看docker 版本信息

docker version

centos7 安装 kubectl客户端 centos7 k8s安装_docker_10


启动Docker,设置开机启动

sudo chkconfig docker on
systemctl start docker

centos7 安装 kubectl客户端 centos7 k8s安装_docker_11


修改Docker镜像仓库为阿里源镜像

vim /etc/docker/daemon.json
{
  "registry-mirrors": ["https://sv69k1rc.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"]
}

https://sv69k1rc.mirror.aliyuncs.com,是小编的阿里源地址,请更换为自己的地址。 修改后刷新daemon.json,重启docker服务使配置生效

systemctl daemon-reload
sudo systemctl restart docker.service

centos7 安装 kubectl客户端 centos7 k8s安装_重启_12

执行完后,可以查看下docker状态及详细信息

service docker status
docker info

centos7 安装 kubectl客户端 centos7 k8s安装_docker_13

安装K8S

  1. 安装K8S源
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

centos7 安装 kubectl客户端 centos7 k8s安装_重启_14


2. 导入公钥

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

centos7 安装 kubectl客户端 centos7 k8s安装_ico_15


3. 安装

yum install -y kubelet-1.15.9-0 kubeadm-1.15.9-0 kubectl-1.15.9-0

centos7 安装 kubectl客户端 centos7 k8s安装_重启_16


4. 开机启动 很重要(如不设置,服务重启后,则需要重新启动 k8s)

systemctl enable kubelet && systemctl start kubelet
systemctl status kubelet

centos7 安装 kubectl客户端 centos7 k8s安装_重启_17


centos7 安装 kubectl客户端 centos7 k8s安装_kubernetes_18


执行这个语句 systemctl status kubelet ,虽然有失败信息,不用管,等到后面初始化完成和加载calico.yml后,就好了。

  1. 初始化K8S集群(在 master 节点上操作)\
kubeadm init --kubernetes-version=v1.15.9 --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.88.106 --apiserver-cert-extra-sans=192.168.88.106,k8s-master   --image-repository registry.aliyuncs.com/google_containers

192.168.8.106 是 master 的ip地址, 由于小编后期修改过ip地址,请把 192.168.88.XXX 看成 192.168.8.XXX

centos7 安装 kubectl客户端 centos7 k8s安装_kubernetes_19


6. 将当前用户配置为集群管理员(如果不配置,下次连接时会无法使用kubectl)master节点操作

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

centos7 安装 kubectl客户端 centos7 k8s安装_重启_20


7. 安装Calico(master节点上操作)

wget https://docs.projectcalico.org/v3.10/getting-started/kubernetes/installation/hosted/kubernetes-datastore/calico-networking/1.7/calico.yaml --no-check-certificate
kubectl apply -f calico.yaml

centos7 安装 kubectl客户端 centos7 k8s安装_ico_21

  1. 然后到其他两个节点执行如下命令,添加节点到master.(在node1 node2 上操作)
kubeadm join 192.168.88.106:6443 --token xfmjke.mh9e32ocm4kayg41 \
    --discovery-token-ca-cert-hash sha256:e22cce363e8d0251785a0920024bd4a4146d64b4b52e58978b0e6c28dc80e09a

centos7 安装 kubectl客户端 centos7 k8s安装_kubernetes_22


9. 加入完毕后,我们用命令kubectl get nodes获取所有节点(master节点上操作,要等上一会才能都是 Ready状态)

kubectl get nodes

centos7 安装 kubectl客户端 centos7 k8s安装_重启_23

验证安装信息

kubectl get componentstatus

centos7 安装 kubectl客户端 centos7 k8s安装_docker_24


检查系统pod状态

kubectl get pods -n kube-system

centos7 安装 kubectl客户端 centos7 k8s安装_docker_25


查看日志的命令: journalctl -f -u kubelet

  1. 测试K8S集群
    这里为了快速地验证一下我们的K8S集群是否可用,创建一个示例Pod:
kubectl create deployment nginx --image=nginx
 kubectl expose deployment nginx --port=80 --type=NodePort
 kubectl get pod,svc

centos7 安装 kubectl客户端 centos7 k8s安装_ico_26


32085 是nginx 的访问端口http://192.168.8.106:32085/ http://192.168.8.186:32085/ http://192.168.8.187:32085/ 都能访问nginx:

centos7 安装 kubectl客户端 centos7 k8s安装_重启_27


11. 经过测试 重启服务,也是能直接访问 ngixn的, 说明集群自启动了。