一、基础环境准备
安装/更新docker
方法一,网络安装
# 1.列出包含docker字段的软件的信息
rpm -qa | grep docker
# 2.卸载相关软件
yum remove docker-1.13.1-53.git774336d.el7.centos.x86_64 -y
yum remove docker-client-1.13.1-53.git774336d.el7.centos.x86_64 -y
yum remove docker-common-1.13.1-53.git774336d.el7.centos.x86_64 -y
# 3.使用curl升级到最新版
curl -fsSL https://get.docker.com/ | sh
# 4.重启Docker
systemctl restart docker
# 5.设置Docker开机自启
# systemctl enable docker
# 6.查看Docker版本信息
docker version
# 7.查看Docker系统信息,包括镜像和容器数…
docker info
# 8.使用docker images命令查看自己之前的镜像是否存在
方法二,离线文件安装
离线安装docker 19.03.5版本 Linux下离线安装Docker 相关资源下载地址: tgz rpm
# 跳过可能会报错提示containerd.io >= 1.2.2-3问题
# yum install https://download.docker.com/linux/fedora/30/x86_64/stable/Packages/containerd.io-1.2.6-3.3.fc30.x86_64.rpm
yum localinstall containerd.io-1.2.6-3.3.fc30.x86_64.rpm
# 安装 docker-ce-cli
# yum install https://download.docker.com/linux/fedora/30/x86_64/stable/Packages/docker-ce-cli-19.03.9-3.fc30.x86_64.rpm
yum localinstall docker-ce-cli-19.03.9-3.fc30.x86_64.rpm
# 安装离线版 docker-ce rpm包
# yum install https://download.docker.com/linux/fedora/30/x86_64/stable/Packages/docker-ce-19.03.9-3.fc30.x86_64.rpm
yum localinstall docker-ce-19.03.9-3.el7.x86_64.rpm
如果 containerd.io、docker-ce-cli、docker-ce在同一目录的话,可执行下方命令安装:
yum localinstall -y *.rpm
关闭防火墙与SELINUX
防止在学习阶段由于防火墙造成的各种网络问题,生产环境跳过这一步
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
systemctl disable firewalld
systemctl stop firewall
关闭交换区
可以理解为虚拟内存,k8s使用时尽量不使用交换区,防止出现预料之外的问题
swapoff -a
vi /etc/fstab
#swap一行注释
#/dev/mapper/centos-swap swap swap defaults 0 0
配置网桥/系统路由参数
防止kubeadm报路由警告
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
修改hosts文件
使用本地解析主机名
cat <<"EOF">/etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.102.139 master
192.168.102.140 node1
192.168.102.141 node2
EOF
# 修改主机名
hostnamectl set-hostname <your_hostname>
修改 cgroupfs
vi /etc/docker/daemon.json
# 加入以下内容:
{
"exec-opts":["native.cgroupdriver=systemd"]
}
# 重启docker
systemctl daemon-reload
systemctl restart docker
systemctl status docker
设置系统时区并同步时间服务器
yum install -y ntpdate
ntpdate time.windows.com
二、k8s集群安装
k8s安装的几种方式
使用kubeadm部署k8s
Centos7.7使用kubeadm快速部署K8s集群(适合新手) 使用kubeadm快速部署一套K8S集群 k8s安装及部署步骤 离线安装k8s
kubectl、kubelete、kubeadm安装
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
setenforce 0
# 查看版本
yum list kubelet kubeadm kubectl
# 安装
yum install -y kubelet kubeadm kubectl
# 开启自启动 & 启动
systemctl enable kubelet && systemctl start kubelet
初始化(仅master节点):
kubeadm init \
--apiserver-advertise-address=192.168.102.137 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.19.2 \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16
按提示执行(仅master节点):
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
查看nodes及pods:
kubectl get nodes
kubectl get pod -n kube-system
安装flannel网络组件(仅master节点)
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kube-flannel.yml 文件及对应镜像建议提前pull到本地
添加node节点
k8s删除node k8s 集群 节点状态显示notready 如何向Kubernetes中的节点添加角色?
kubeadm token create --print-join-command
应用安装及访问
k8s系列之安装k8s仪表盘(Dashboard) 注意事项:
- 可以提前
docker pull eipwork/kuboard:latest - 修改
imagePullPolicy值为IfNotPresent或Never
配置kubectl命令补全
kubectl是用于与k8s集群交互的一个命令行工具,操作k8s基本离不开这个工具,所以该工具所支持的命令比较多。好在kubectl支持设置命令补全,使用kubectl completion -h可以查看各个平台下的设置示例。这里以Linux平台为例,演示一下如何设置这个命令补全,完成以下操作后就可以使用tap键补全命令了。
[root@master ~]# yum install bash-completion -y
[root@master ~]# source /usr/share/bash-completion/bash_completion
[root@master ~]# source <(kubectl completion bash)
[root@master ~]# kubectl completion bash > ~/.kube/completion.bash.inc
[root@master ~]# printf "
# Kubectl shell completion
source '$HOME/.kube/completion.bash.inc'
" >> $HOME/.bash_profile
[root@master ~]# source $HOME/.bash_profile