本文介绍的是最基础的一主两从模式,因新版 K8S 不支持 docker,而业务上不想抛弃 docker,所以选用还支持 docker 版本的 K8S 进行部署

Docker安装

master 和 node 节点都需要安装 Docker

安装依赖包

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

设置docker源

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

查看docker可安装版本

yum list docker-ce --showduplicates | sort -r

安装指定版本的 Docker

yum install docker-ce-18.09.6 docker-ce-cli-18.09.6 containerd.io

启动 Docker

systemctl start docker

开机启动

systemctl enable docker

镜像加速
使用阿里云进行加速,地址:https://cr.console.aliyun.com,没有账号的同学需要注册一波

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://0ibkxe0n.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

在这里插入图片描述

查看 Docker 版本

docker --version

尝试运行 Hello world

docker run hello-world

 

安装前配置

master 和 node 节点都需要配置

修改主机名

按需修改为 master 、 node01 、node02

hostnamectl set-hostname master

查看主机名

 more /etc/hostname 

禁用swap

临时禁用

swapoff -a

永久禁用

sed -i.bak '/swap/s/^/#/' /etc/fstab

内核参数修改

临时修改

sysctl net.bridge.bridge-nf-call-iptables=1 

sysctl net.bridge.bridge-nf-call-ip6tables=1

永久修改

cat <<EOF >  /etc/sysctl.d/k8s.conf

net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

修改Cgroup Driver

修改daemon.json
增加 “exec-opts”: [“native.cgroupdriver=systemd”]

{
  "registry-mirrors": ["https://0ibkxe0n.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"]
}

重新加载 Docker

systemctl daemon-reload
systemctl restart docker

设置kubernetes源

**新增 K8S 源
注意: 这里的 gpgcheck 和 repo_gpgcheck 设置为1,yum -y makecache 会报错,所以设置为0,不验证

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=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
yum -y makecache

 

安装K8S

master 和 node 节点都需要安装

安装组件

版本查看

yum list kubelet --showduplicates | sort -r 

指定版本安装

安装 kubelet 和 kubeadm 后,kubectl 也已经安装成功

 yum install -y kubelet-1.14.2
 yum install -y kubeadm-1.14.2

kubeadm :部署kubernetes集群的工具
kubelet :master 派到 node 节点代表,管理本机容器;一个集群中每个节点上运行的代理,它保证容器都运行在Pod中;负责维护容器的生命周期,同时也负责Volume(CSI) 和 网络(CNI)的管理
kubectl :Kubernetes集群的命令行工具,通过kubectl能够对集群本身进行管理,并能够在集群上进行容器化应用的安装和部署

启动kubelet

systemctl enable kubelet
systemctl start kubelet

kubelet命令补全

echo "source <(kubectl completion bash)" >> ~/.bash_profile
source .bash_profile 

拉取镜像

设置镜像源

vim image.sh 
#!/bin/bash
url=registry.cn-hangzhou.aliyuncs.com/google_containers
version=v1.14.2
images=(`kubeadm config images list --kubernetes-version=$version|awk -F '/' '{print $2}'`)
for imagename in ${images[@]} ; do
  docker pull $url/$imagename
  docker tag $url/$imagename k8s.gcr.io/$imagename
  docker rmi -f $url/$imagename
done

运行脚本

chmod u+x image.sh
./image.sh
docker images

 

配置 Master 节点

初始化主节点

kubeadm init --apiserver-advertise-address [主节点ip] --pod-network-cidr=10.244.0.0/16

此时发现报错:You can also perform this action in beforehand using 'kubeadm config images pull
在这里插入图片描述
解决方案:指定国内的源

kubeadm init --image-repository registry.aliyuncs.com/google_containers --ignore-preflight-errors=Swap --apiserver-advertise-address [主节点ip] --pod-network-cidr=10.244.0.0/16

成功后可以看到节点入集群的命令,记住这个命令
在这里插入图片描述
加载环境变量

echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile

source .bash_profile 

安装flannel

若访问不了,可以先下载 kube-flannel.yml 再执行

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

 

配置子节点加入集群

主节点操作

查看令牌
在主节点查看令牌是否过期,TTL字段是否为 invalid

kubeadm token list

生成新令牌

 kubeadm token create

生成新的加密串

openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'

子节点操作
加入集群

kubeadm join [主节点ip]:6443 --token [令牌] --discovery-token-ca-cert-hash sha256:[加密串]
Logo

开源、云原生的融合云平台

更多推荐