1 基础环境配置

1.1 配置基础环境

# (1)更新安装包
sudo apt update

# (2)配置内存
# 临时关闭虚拟内存
sudo swapoff -a

# 永久关闭虚拟内存
sudo vim /etc/fstab
# 注释掉下面一行即可
# /swapfile                                 none            swap    sw              0       0

# (3)关闭防火墙
# 关闭防火墙
systemctl stop firewalld
# 禁用防火墙
systemctl disable firewalld

1.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

2 安装docker

2.1 安装docker基础环境

# 配置安装环境
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

ubuntu关闭docker进程 ubuntu关闭docker网卡_docker

# 安装docker,可以不指定版本号,默认安装最新版本
sudo apt-get install docker-ce=5:18.09.6~3-0~ubuntu-bionic
# 设置开机启动
sudo systemctl enable docker

2.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.sock

3 安装k8s

3.1 安装k8s基础环境(全部节点)

# 配置安装环境
sudo apt-get update && sudo 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 update

3.2 安装k8s包(全部节点)

# 查看k8s版本号
apt-cache madison kubelet

ubuntu关闭docker进程 ubuntu关闭docker网卡_linux_02

# 安装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
 
# 查看kubelet状态
# Active: active (running)是启动状态
systemctl status kubelet
 
# 停止kubelet
systemctl stop kubelet
 
# 启动kubelet
systemctl start kubelet

3.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网络地址(建议使用10.96.0.0/12,也可以不设置),不可与主机,pod网络地址重复
# --pod-network-cidr 				pod网络地址(建议使用10.244.0.0/16),不可与主机,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.96.0.0/12 \
--pod-network-cidr=10.244.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:466c91b1fd65f49bd5d21c0ccc9204371323a99c96c86a6f429690890b554eaf

3.5 操作节点

(1)查看节点

# 在master节点上查看集群结点
kubectl get nodes

ubuntu关闭docker进程 ubuntu关闭docker网卡_vim_03

 (2)删除节点

# 删除节点
# 删除节点后,需要在相应的子节点
sudo kubectl delete nodes node1


# 重置主机点,慎重操作!!
# 手动删除配置文件
sudo rm -rf  /etc/kubernetes/pki/ca.crt
sudo rm -rf  /etc/kubernetes/kubelet.conf
sudo rm -rf  $HOME/.kube

# 重置子节点
sudo kubeadm reset
# 重新加载配置文件
systemctl daemon-reload

# 重置子节点,使用以下命令即可
sudo kubeadm reset

3.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