一、准备两台机器
master:10.8.206.161
node:10.8.206.162
二、设置/etc/hosts
10.8.206.161 master
10.8.206.162 minion
三、安全相关禁用
1.关闭防火墙
systemctl disable firewalld
systemctl stop firewalld
2.禁用SELINUX:
setenforce 0
vi /etc/selinux/config
SELINUX=disabled
3.禁用 Swap
没有禁用将会造成kubelet启动不起来
swapoff -a
vi /etc/fstab 将swap相关行注释掉
4.加载ipvs模块
cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
EOF
chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4
四、设置源仓库
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
添加阿里云的Docker仓库:
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache
cat > /etc/yum.repos.d/kubernetes.repo <<EOF
[kubernetes]
name=Kubernetes Repo
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
enabled=1
EOF
导入key
wget https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
rpm --import rpm-package-key.gpg
五、安装docker-ce
yum install -y --setopt=obsoletes=0 docker-ce
systemctl start docker
systemctl enable docker #查看docker版本号
创建或修改/etc/docker/daemon.json:
{
"exec-opts": ["native.cgroupdriver=systemd"]
}
重启docker
systemctl restart docker
docker info | grep Cgroup
确认是不是systemd
六、用kubeadm 部署 kubernetes(master机器上执行)
安装kubelet kubeadm kubectl(注意查看版本号,在init的时候需要填写kubernetes-version版本号)
yum install -y kubelet kubeadm kubectl
kubeadm init \
--apiserver-advertise-address=10.8.206.161 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.15.1 \
--pod-network-cidr=10.244.0.0/16
注意看控制台日志:
To start using your cluster, you need to run the following as a regular user:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
https://kubernetes.io/docs/concepts/cluster-administration/addons/
Then you can join any number of worker nodes by running the following on each as root:
kubeadm join 111.111.111.111:6443 --token cmu81v.6yh3szktbo1vzfap \
--discovery-token-ca-cert-hash sha256:fb9f2d6bd97b9b84fc90b2bac544b4eaa4162e23c6837c55a607b859a2552819
#普通用户要使用k8s 需要执行下面操作
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
#如果是root 可以直接执行
export KUBECONFIG=/etc/kubernetes/admin.conf
# 以上两个二选一即可,这里我是直接用的root 所以直接执行
export KUBECONFIG=/etc/kubernetes/admin.conf
再次执行systemctl status kubelet.service,服务正常了
查看每个组件是否正常:kubectl get cs
[root@hn-chenzhousjzx-sx-bkl-0001 ~]# kubectl get cs
NAME STATUS MESSAGE ERROR
scheduler Healthy ok
controller-manager Healthy ok
etcd-0 Healthy {"health":"true"}
查看node状态
[root@hn-chenzhousjzx-sx-bkl-0001 ~]# kubectl get node
NAME STATUS ROLES AGE VERSION
hn-chenzhousjzx-sx-bkl-0001.novalocal NotReady master 6m36s v1.15.1
安装port Network( flannel ) :: k8s cluster 工作 必须安装pod网络,否则pod之间无法通信,k8s支持多种方案,这里选择flannel
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
检查pod状态,需要确保当前Pod 都是 running
kubectl get pod --all-namespaces -o wide
再次查看node状态; pod状态变为 Ready
[root@hn-chenzhousjzx-sx-bkl-0001 ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
hn-chenzhousjzx-sx-bkl-0001.novalocal Ready master 9m18s v1.15.1