目录
安装Docker
- 所有节点都必须安装
1. 配置Docker下载源
- 由于不可抗力原因,建议配置Docker下载源为Aliyun
cat >/etc/yum.repos.d/docker.repo<<EOF
[docker-ce-edge]
name=Docker CE Edge - \$basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/\$basearch/edge
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
EOF
2. 安装Docker
yum install -y docker-ce
docker --version
# 启动docker并设置开机启动
systemctl start docker && systemctl enable docker
3. 配置Docker镜像下载源
- 自行到Aliyun注册账户,开通容器镜像服务,目前个人免费,找到属于个人的加速源。地址
cat >> /etc/docker/daemon.json << EOF
{
"registry-mirrors": ["https://xxx.aliyuncs.com"]
}
EOF
4. 重新加载
systemctl daemon-reload
systemctl restart docker
安装kubeadm、kubelet
1. 设置K8S安装源
-
设置K8S安装源为Aliyun
-
所有实例都必须安装
cat > /etc/yum.repos.d/kubernetes.repo << EOF [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=0 repo_gpgcheck=0 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF
2. 安装kubeadm,kubelet和kubectl
- 由于K8S社区更新速度很快,差不多按照季度/半年更新,所以安装尽量指定版本
- 所有阶段都必须安装
# 安装kubelet、kubeadm、kubectl
yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0
# 设置开机启动
systemctl enable kubelet
3. 初始化 K8S Master
- 只需要在Master节点上执行
kubeadm init --apiserver-advertise-address=‘master ip 地址’ --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.18.0 --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16
-
该步会拉取很多Docker镜像,速度有时会很慢,耐心等待,可以通过命令查看
docker images
-
当出现下面图片情况,表示K8S 初始化成功
-
使用kubectl工具
mkdir -p $HOME/.kube cp -i /etc/kubernetes/admin.conf $HOME/.kube/config chown $(id -u):$(id -g) $HOME/.kube/config
-
查看节点运行情况
kubectl get nodes
4. 初始化 K8S Node
-
将 Node 节点加入到 Master,分别在两台Node节点上执行上方截图中圈中的命令
-
【每个人初始化后,Master输出信息都不一致,需要复制自己Master节点生成的】
-
【示例】:分别在两台Node执行
kubeadm join 192.168.240.161:6443 --token 6afmzu.xhvkqtkp22im3467 --discovery-token-ca-cert-hash sha256:f6bf3ff5f4c635b45d3d00418bdbd2e034e3ff6f5abab1d3e07659cc82b96d32
-
5. 查看集群
-
查看集群状态【Master执行】
kubectl get nodes
- 此时,应该有三台K8S服务,一台master,两台node,状态均为
NotReady
- 此时,应该有三台K8S服务,一台master,两台node,状态均为
-
设置Token有效期【Master执行】
kubeadm token create --print-join-command
6. 部署CNI网络插件
-
由于Master和Node之间需要进行网络连通,需要配置CNI网络
-
【Master节点执行】
-
下载网络插件并添加到K8S中
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.ymlkubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
-
查看集群节点状况
kubectl get pods -n kube-system
kubectl get nodes
-
【注】:该步骤经常会由于网络原因导致失败,具体参照下方文档解决
https://blog.csdn.net/zyl974611232/article/details/107518192
K8S 集群测试
-
使用Nginx进行K8S集群测试,K8S通过Docker拉取镜像并启动
-
【Master 执行】
-
下载nginx
kubectl create deployment nginx --image=nginxkubectl get pod
- 刚开始,状态可能为:
ContainerCreating
,表示Docker正在拉取Nginx镜像,稍等即可
- 刚开始,状态可能为:
-
暴露Nginx端口
- 上述步骤虽然已经将Nginx安装成功,但是外界是访问不到,需要将K8S集群内部Nginx端口暴露出去
kubectl expose deployment nginx --port=80 --type=NodePortkubectl get pod,svc
- 如图中所示:30629即Nginx对外暴露端口
- 宿主机浏览器访问
MasterIp:30629
,此时会发现已经启动成功,有Nginx初始化界面,表示K8S安装成功
K8S 常用命令
-
获取Pod
# 简略信息 kubectl get pod # 详细信息 kubectl get pod -o wide
-
获取Node
# 简略信息 kubectl get node # 详细信息 kubectl get node -o wide
-
删除Pod,deployment,service
- 删除之前,首先要获取Pod,deployment信息
- 获取信息之后,在进行删除,先删除deployment,再删除pod,否则可能出现pod删除后无限重启情况
kubectl get pod kubectl get deployment kubectl get service kubectl delete pod 'podName' kubectl delete deployment 'deploymentName' kubectl delete service 'serviceName'
-
查看详情信息
kubectl describe pod 'podName' kubectl describe deployment 'deploymentName'
K8S 安装问题
1. 问题一
Unable to connect to the server: x509: certificate signed by unknown authority (possibly because of "crypto/rsa: verification error" while trying to verify candidate authority certificate "kubernetes")
-
【问题】:若首次安装K8S出现错误,二次安装时,需要重新初始化K8S-Master配置
-
【解决】:参照 [初始化 K8S Master 章节],重新执行下列命令
rm -rf $HOME/.kube
mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/config
2. 问题二
error execution phase preflight: [preflight] Some fatal errors occurred: [ERROR Swap]: running with swap on is not supported. Please disable swap
-
【问题】:未关闭SWAP
-
【解决】
# 关闭swap swapoff -a && sed -ri 's/.*swap.*/#&/' /etc/fstab