一、环境
• 安装docker-ce 18.09.9(所有机器)
• 设置k8s环境前置条件(所有机器)
• 安装k8s v1.16.0 master管理节点
• 安装k8s v1.16.0 node工作节点
• 安装flannel(master)
• linux发行版:CentOS7(2g内存,2个cpu)
• linux内核(使用uname -r查看):3.10.0-957.el7.x86_64
• master和node节点通信的ip(master):192.168.198.110,(node3):192.168.198.120
二、安装docker-ce 18.09.9(所有机器)
所有安装k8s的机器都需要安装docker,命令如下:
# 安装docker所需的工具
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
# 指定安装这个版本的docker-ce
yum install -y docker-ce-18.09.9-3.el7
# 启动docker
systemctl start docker && systemctl enable docker
三、设置k8s环境准备条件(所有机器)
# 关闭防火墙
systemctl disable firewalld
systemctl stop firewalld
# 关闭selinux
# 临时禁用selinux
setenforce 0
# 永久关闭 修改/etc/sysconfig/selinux文件设置
sed -i 's/SELINUX=permissive/SELINUX=disabled/' /etc/sysconfig/selinux
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
# 禁用交换分区
swapoff -a
# 永久禁用,打开/etc/fstab注释掉swap那一行。
sed -i 's/.*swap.*/#&/' /etc/fstab
# 修改内核参数
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
四、 安装k8s v1.16.0 master管理节点
1. 安装kubeadm、kubelet、kubectl
由于官方k8s源在google,国内无法访问,这里使用阿里云yum源
# 执行配置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
# 安装kubeadm、kubectl、kubelet
yum install -y kubectl-1.16.0-0 kubeadm-1.16.0-0 kubelet-1.16.0-0
# 启动kubelet服务
systemctl enable kubelet && systemctl start kubelet
2. 初始化k8s
kubeadm init --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.16.0 --apiserver-advertise-address 192.168.198.110 --pod-network-cidr=10.244.0.0/16 --token-ttl 0
上面安装完后,会提示你输入如下命令,复制粘贴过来,执行即可。
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
3. 记住node加入集群的命令 上面kubeadm init执行成功后会返回给你node节点加入集群的命令,等会要在node节点上执行,需要保存下来,如果忘记了,可以使用如下命令获取。
kubeadm token create --print-join-command
五、安装k8s v1.16.0 node工作节点
1. 安装kubeadm、kubelet
# 执行配置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
# 安装kubeadm、kubectl、kubelet
yum install -y kubeadm-1.16.0-0 kubelet-1.16.0-0
# 启动kubelet服务
systemctl enable kubelet && systemctl start kubelet
2. 加入集群 这里加入集群的命令每个人都不一样,可以登录master节点,使用kubeadm token create --print-join-command 来获取。获取后执行如下。
# 加入集群,如果这里不知道加入集群的命令,可以登录master节点,使用kubeadm token create --print-join-command 来获取
kubeadm join 192.168.198.120:6443 --token tgri7x.ly315jzsqt1hx8kx --discovery-token-ca-cert-hash sha256:4130d848f62a0f46a97836ecc33aecd5c5884022b186f4dfa5bd37865600f747 加入成功后,可以在master节点上使用kubectl get nodes命令查看到加入的节点。
六、安装flannel(master机器)
以上步骤安装完后,机器搭建起来了,但状态还是NotReady状态,如下图,master机器需要安装flanneld。
[root@master ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
master NotReady master 18h v1.16.0
node3 NotReady <none> 27s v1.16.0
3. 下载官方fannel配置文件 使用wget命令,地址为:
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml)
4. 安装fannel
kubectl apply -f kube-flannel.yml
七、完成
[root@master ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
master Ready master 18h v1.16.0
node3 Ready <none> 27s v1.16.0
八、部署dashboard
获取部署dashboard的yaml文件:
wget https://github.com/kubernetes/dashboard/blob/master/aio/deploy/recommended.yaml
mv recommended.yaml dashboard.yaml
vim dashboard.yaml 编辑以下内容
-----------------------------------------------------------------------------------------
kind: Service
apiVersion: v1
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kubernetes-dashboard
spec:
type: NodePort #添加端口类型
ports:
- port: 443
targetPort: 8443
nodePort: 30001 #指定端口,不然会随机开启
selector:
k8s-app: kubernetes-dashboard
-------------------------------------------------------------------------------------------
创建服务
kubectl apply -f dashboard.yaml
创建sa
kubectl create serviceaccount dashboard-admin -n kubernetes-dashboard
绑定集群管理员
kubectl create clusterrolebinding dashboard-cluster-admin --clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:dashboard-admin
获取token
kubectl describe secrets
网页登录https://ip:30001
删除资源
kubectl delete -f dashboard.yaml