以下所有操作均基于Cent OS 7操作系统。
- 基本环境配置
- 关闭selinux
临时关闭:setenforce 0
永久关闭:/etc/selinux/config
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g"
- 关闭swap分区或禁用swap文件
临时关闭:swapoff -a
永久关闭:/etc/fstab
- 注释掉关于swap分区的行
yes | cp /etc/fstab /etc/fstab_bak
cat /etc/fstab_bak |grep -v swap > /etc/fstab
- 修改网卡配置 vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
$ sysctl -p #应用执行
- 启用内核模块 vim /etc/sysconfig/modules/ipvs.modules
#添加下列内容
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
依次执行:
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
查看是否启用: cut -f1 -d" "/proc/modules | grep -e ip_vs -e nf_conntrack_ipv4
- 关闭防火墙
关闭:systemctl stop firewalld
禁用:systemctldisablefirewalld
- 配置hosts
kubectl、kubeadm、kubelet的安装
添加Kubernetes的yum源
此处使用alibaba的镜像源
vim /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
安装kubelet、kubeadm、kubectl:
yum install -y kubelet kubeadm kubectl
启动kubelet服务
添加开机自启:systemctl enable kubelet
启动:systemctl start kubelet
此时执行systemctl status kubelet查看服务状态,服务状态应为Error(255), 如果是其他错误可使用journalctl -xe查看错误信息。
Docker安装和配置
docker的安装请查看官网文档(Overview of Docker editions)[https://docs.docker.com/install/overview/]
Docker配置
- 配置cgroup-driver为systemd
查看cgroup-driver
docker info | grep -i cgroup
####追加 --exec-opt native.cgroupdriver=systemd 参数
$sed -i"s#^ExecStart=/usr/bin/dockerd.*#ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --exec-opt native.cgroupdriver=systemd#g"/usr/lib/systemd/system/docker.service
systemctl daemon-reload# 重新加载服务
systemctl enable docker# 启用docker服务(开机自起)
systemctl restart docker# 启动docker服务
或者修改docker配置文件(推荐)
vim /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"]
}
- 预先拉取所需镜像
查看kubeadm所需镜像
kubeadm config images list
k8s.gcr.io/kube-apiserver:v1.16.3
k8s.gcr.io/kube-controller-manager:v1.16.3
k8s.gcr.io/kube-scheduler:v1.16.3
k8s.gcr.io/kube-proxy:v1.16.3
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd:3.3.15-0
k8s.gcr.io/coredns:1.6.2
拉取镜像
docker pull kubeimage/kube-apiserver-amd64:v1.16.3
docker pull kubeimage/kube-controller-manager-amd64:v1.16.3
docker pull kubeimage/kube-scheduler-amd64:v1.16.3
docker pull kubeimage/kube-proxy-amd64:v1.16.3
docker pull kubeimage/pause-amd64:3.1
docker pull kubeimage/etcd-amd64:3.3.15-0
docker pull coredns/coredns:1.6.2
3.对预先拉取的镜像重新打tag
docker tag kubeimage/kube-apiserver-amd64:v1.16.3 k8s.gcr.io/kube-apiserver:v1.16.3
docker tag kubeimage/kube-controller-manager-amd64:v1.16.3 k8s.gcr.io/kube-controller-manager:v1.16.3
docker tag kubeimage/kube-scheduler-amd64:v1.16.3 k8s.gcr.io/kube-scheduler:v1.16.3
docker tag kubeimage/kube-proxy-amd64:v1.16.3 k8s.gcr.io/kube-proxy:v1.16.3
docker tag kubeimage/pause-amd64:3.1 k8s.gcr.io/pause:3.1
docker tag kubeimage/etcd-amd64:3.3.15-0 k8s.gcr.io/etcd:3.3.15-0
docker tag coredns/coredns:1.6.2 k8s.gcr.io/coredns:1.6.2
Master节点的配置
- Master节点的初始化
初始化master节点,
# --pod-network-cidr=10.244.0.0/16 指定使用flannel网络
# --kubernetes-version=v1.16.3 指定k8s的版本,可不要
# --apiserver-advertise-address=192.168.56.101 指向master节点IP,此处也可以使用hosts
kubeadm init --pod-network-cidr=10.244.0.0/16 --kubernetes-version=v1.16.3 --apiserver-advertise-address=192.168.56.101
###接下来执行剩余的初始化步骤
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g)
flannel网络插件地址 :https://github.com/coreos/flannel
具体安装步骤:
1.安装flannel
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
2.监听安装进度
watch kubectl get pods --all-namespaces
3.查看安装是否正常
kubectl get nodes -o wide
输出下列
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
kubernetes-master Ready master 4d12h v1.16.3 192.168.56.101 <none> CentOS Linux 7 (Core) 3.10.0-1062.el7.x86_64 docker://19.3.4
Node节点的初始化
1.登录node节点,执行加入集群的命令,完成加入集群操作
kubeadm join 192.168.56.101:6443 --token kt58np.djd3youoqb0bnz4r \
--discovery-token-ca-cert-hash sha256:37a3924142dc6d57eac2714e539c174ee3b0cda723746ada2464ac9e8a2091ce
2.在master节点上查看添加结果
kubectl get nodes -o wide