# (1)更新安装包 sudo apt update # (2)配置内存 # 临时关闭虚拟内存 sudo swapoff -a # 永久关闭虚拟内存 sudo vim /etc/fstab # 注释掉下面一行即可 # /swapfile none swap sw 0 0 # (3)关闭防火墙 # 关闭防火墙 systemctl stop firewalld # 禁用防火墙 systemctl disable firewalld1.2 配置基础环境
| 主机名 | IP地址 | 软件环境 |
|---|---|---|
| mason-master | 192.168.108.136 | docker-v18.09.6、kubelet-v1.18.6 kubeadm-v1.18.6 kubectl-v1.18.6 |
| mason-node1 | 192.168.108.137 | docker-v18.09.6、kubelet-v1.18.6 kubeadm-v1.18.6 kubectl-v1.18.6 |
| mason-node2 | 192.168.108.138 | docker-v18.09.6、kubelet-v1.18.6 kubeadm-v1.18.6 kubectl-v1.18.6 |
# 配置安装环境 sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common # 添加安装密钥 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - # 设置安装稳定版 sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"2.2 安装docker
# 查看docker稳定版列表 apt-cache madison docker-ce
# 安装docker,可以不指定版本号,默认安装最新版本 sudo apt-get install docker-ce=5:18.09.6~3-0~ubuntu-bionic # 设置开机启动 sudo systemctl enable docker2.3 修改docker配置
添加配置信息
# 进入/etc/docker目录
cd /etc/docker
# 添加daemon.js文件
sudo touch daemon.js
# 编辑daemon.js
sudo vim daemon.js
# 添加内容如下
{
"exec-opts":["native.cgroupdriver=systemd"]
}
重启docker,使配置信息生效
# 加载docker配置 systemctl daemon-reload # 重启docker sudo systemctl restart docker # 重置docker.sock权限 sudo chmod 666 /var/run/docker.sock3 安装k8s 3.1 安装k8s基础环境(全部节点)
# 配置安装环境 sudo apt-get update && apt-get install -y apt-transport-https # 添加安装密钥 curl -fsSL https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add - # 添加k8s镜像源 # 进入/etc/apt/sources.list.d目录下 cd /etc/apt/sources.list.d # 创建kubernetes.list文件 sudo touch kubernetes.list # 编辑kubernetes.list sudo vim kubernetes.list # 在kubernetes.list文件中添加地址如下 deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main # 更新安装包 sudo apt-get update3.2 安装k8s包(全部节点)
# 查看k8s版本号 apt-cache madison kubelet
# 安装k8s sudo apt-get install kubelet=1.18.6-00 kubeadm=1.18.6-00 kubectl=1.18.6-00 # 设置开机启动 sudo systemctl enable kubelet # 查看k8s版本 kubectl version # 设置开机启动 systemctl enable kubelet # 查看kubelet状态 # Active: active (running)是启动状态 systemctl status kubelet # 停止kubelet systemctl stop kubelet # 启动kubelet systemctl start kubelet3.3 初始化集群(master节点)
(1)查看需要的镜像名称
查看需要的镜像
# 注意:此处列出的版本可能不是(1.18.6),下面下载镜像时,版本设置一致。 kubeadm config images list
(2)在master节点下载镜像
创建download.sh脚本(注意设置脚本权限为可执行)
# 创建文件 touch download.sh # 设置执行权限 chmod 777 download.sh
脚本内容如下(脚本内容是上一步中的镜像名称)
注意国内无法连接到“k8s.gcr.io”,所以需要配置到阿里云“registry.cn-hangzhou.aliyuncs.com/google_containers”
images=(
kube-apiserver:v1.18.6
kube-controller-manager:v1.18.6
kube-scheduler:v1.18.6
kube-proxy:v1.18.6
pause:3.2
etcd:3.4.3-0
coredns:1.6.7
)
for imageName in ${images[@]};do
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
done
(3)安装k8s
# 注意,如果用虚拟机,内核数量必须要2个及以上。 # --image-repository 镜像加速,指定初始化下载的镜像。 # --apiserver-advertise-address 直接使用当前master主机地址 # --kubernetes-version k8s版本,可以不指定,缺省情况会用最新的 # --service-cidr service网络地址,不可与主机,pod网络地址重复 # --pod-network-cidr pod网络地址,不可与主机,service网络地址重读,与后面的Calico相关 # --v 日志等级,5级以上会打印更详细的日志,--v=6开启详细日志打印 sudo kubeadm init --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers --apiserver-advertise-address=192.168.108.136 --kubernetes-version=v1.18.6 --service-cidr=10.11.0.0/16 --pod-network-cidr=10.12.0.0/16 --v=6
(4)初始化过程和结果
I0501 10:41:57.746196 3147 initconfiguration.go:103] detected and using CRI socket: /var/run/dockershim.sock
W0501 10:41:57.746343 3147 configset.go:202] WARNING: kubeadm cannot validate component configs for API groups [kubelet.config.k8s.io kubeproxy.config.k8s.io]
[init] Using Kubernetes version: v1.18.6
[preflight] Running pre-flight checks
........
# 省略日志
........
I0501 10:42:31.652688 3147 loader.go:375] Config loaded from file: /etc/kubernetes/admin.conf
I0501 10:42:31.653740 3147 loader.go:375] Config loaded from file: /etc/kubernetes/admin.conf
# 表示安装成功
Your Kubernetes control-plane has initialized successfully!
# 设置集群
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/
# 在将结点加入到集群中,注意下面的token(24小时后过期)
Then you can join any number of worker nodes by running the following on each as root:
kubeadm join 192.168.108.136:6443 --token p6g2f9.2u6pojkz0q53g6gi
--discovery-token-ca-cert-hash sha256:466c91b1fd65f49bd5d21c0ccc9204371323a99c96c86a6f429690890b554eaf
3.4 配置节点
(1)配置主节点
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
(2) 将节点添加到集群(子节点)
在子节点中执行以下命令即可
sudo kubeadm join 192.168.108.136:6443 --token p6g2f9.2u6pojkz0q53g6gi --discovery-token-ca-cert-hash sha256:466c91b1fd65f49bd5d21c0ccc9204371323a99c96c86a6f429690890b554eaf3.5 操作节点
(1)查看节点
# 在master节点上查看集群结点 kubectl get nodes
(2)删除节点
# 删除节点 # 删除节点后,需要在相应的子节点 sudo kubectl delete nodes node1 # 重置主机点,慎重操作!! # 手动删除配置文件 sudo rm -rf /etc/kubernetes/pki/ca.crt sudo rm -rf /etc/kubernetes/kubelet.conf sudo rm $HOME/.kube # 重置子节点 sudo kubeadm reset # 重新加载配置文件 systemctl daemon-reload # 重置子节点,使用以下命令即可 sudo kubeadm reset3.6 安装flannel
# 下载flannel配置文件 wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml # 安装flannel kubectl apply -f kube-flannel.yml
注意:创建Pod时,如果出现Pod之间无法ping通,可以在子节点执行以下命令。
# iptables是Linux平台下包过滤防火墙 sudo iptables -P INPUT ACCEPT sudo iptables -P FORWARD ACCEPT sudo iptables -F sudo iptables -L -n



