Kubernetes 单机版部署还是比较简单的,下面开始操作吧。

查看内核版本:

cat /etc/redhat-release

Centos7部署kubernetes单机集群(K8S)_ci

关闭selinux

setenforce 0 && sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

关闭默认防火墙

systemctl stop firewalld
systemctl disable firewalld

设置hostname

hostnamectl --static set-hostname master

修改内核参数和模块

cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

使内核参数配置生效

sysctl --system
modprobe br_netfilter
lsmod | grep br_netfilter

关闭交换内存,如果不关闭,kubelet服务将无法启动

swapoff -a && sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

安装docker 、建议改成国内的源,速度比较快

yum -y install yum-utils device-mapper-persistent-data lvm2
yum-config-manager -y --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum -y install docker-ce-18.06.3.ce-3.el7 docker-ce-cli-18.06.3.ce-3.el7 containerd.io
systemctl start docker
systemctl enable docker

设置国内docker仓库

cat <<EOF > /etc/docker/daemon.json
{
"registry-mirrors": [
"https://3laho3y3.mirror.aliyuncs.com"
]
}
EOF
systemctl restart docker

配置kubernetes yum源,用以安装Kubernetes基础服务及工具,此处使用阿里云镜像仓库源

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

说明:

gpgcheck=0:表示对从这个源下载的rpm包不进行校验

repo_gpgcheck=0:某些安全性配置文件会在 /etc/yum.conf 内全面启用 repo_gpgcheck,以便能检验软件库的中继数据的加密签署

如果gpgcheck设为1,会进行校验,就会报错如下,所以这里设为0
failure: repodata/repomd.xml from kubernetes: [Errno 256] No more mirrors to try.
https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/repodata/repomd.xml: [Errno -1] repomd.xml signature could not be verified for kubernetes

安装Kubernetes基础服务及工具

yum -y install kubelet-1.13* kubeadm-1.13* kubectl-1.13*
systemctl start kubelet
systemctl enable kubelet.service

下载k8s相关镜像并打标签:

查看需要镜像

kubeadm config images list

Centos7部署kubernetes单机集群(K8S)_docker_02


下载所需要的镜像:

for i in `kubeadm config images list`; do 
imageName=${i#k8s.gcr.io/}
docker pull registry.aliyuncs.com/google_containers/$imageName
docker tag registry.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName
docker rmi registry.aliyuncs.com/google_containers/$imageName
done;

初始化k8s和网络

kubeadm init --kubernetes-version=v1.13.12 --pod-network-cidr=10.100.0.0/16

参数说明:
–pod-network-cidr=10.100.0.0/16 k8s内部的pod节点之间网络可以使用的IP段,不能和service-cidr写一样,如果不知道怎么配,就先用这个10.100.0.0/16

安装成功标志

Centos7部署kubernetes单机集群(K8S)_容器_03

开机启动 && 启动服务

systemctl enable kubelet && systemctl start kubelet

初始化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 apply -f https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')

默认k8s的master节点是不能跑pod的业务,需要执行以下命令解除限制

kubectl taint nodes --all node-role.kubernetes.io/master-

查看主节点运行 Pod 的状态

需要一段时间进行init;

kubectl get pods --all-namespaces -o wide

Centos7部署kubernetes单机集群(K8S)_容器_04


等所有 服务都running了

Centos7部署kubernetes单机集群(K8S)_xml_05


查看一下,已经有默认的工作空间了:

Centos7部署kubernetes单机集群(K8S)_xml_06


创建一个自己的命名空间试试:

Centos7部署kubernetes单机集群(K8S)_xml_07

这样就已经初始化好了。