k8s安装教程

参考文章:

https://www.kubernetes.org.cn/7189.html
https://www.kubernetes.org.cn/5462.html
https://www.kubernetes.org.cn/6632.html

设置主机名

设置主机名hostname,管理节点设置主机名为 master
需要设置其他主机名称时,可将 master 替换为正确的主机名node1、node2即可。

hostnamectl set-hostname master

添加域名解析

cat <<EOF >>/etc/hosts
192.168.241.101 master
192.168.241.102 node1
192.168.241.103 node2
EOF

关闭防火墙、selinux和swap

systemctl stop firewalld
systemctl disable firewalld

setenforce 0
sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

swapoff -a
sed -i 's/.*swap.*/#&/' /etc/fstab

配置内核参数

将桥接的IPv4流量传递到iptables的链

cat > /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

sysctl --system

添加阿里云yum源

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

安装

#安装相关工具
yum -y install kubectl kubelet kubeadm bash-completion
#启动Kubelet
systemctl enable kubelet && systemctl start kubelet

以上步骤在所有节点执行

初始化 K8S 集群-master节点

这一步很关键,由于kubeadm 默认从官网k8s.grc.io下载所需镜像,国内无法访问,因此需要通过–image-repository指定阿里云镜像仓库地址。

  • 版本号为实际安装的版本号
  • POD的网段为: 10.122.0.0/16
  • api server地址就是master本机IP。
kubeadm init --kubernetes-version=1.19.3  \
--apiserver-advertise-address=192.168.241.101   \
--image-repository registry.aliyuncs.com/google_containers  \
--service-cidr=10.10.0.0/16 --pod-network-cidr=10.122.0.0/16
安装 kubectl 命令,复制输出的命令执行:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
加载命令自动补全
source <(kubectl completion bash)
查看节点状态
kubectl get node
查看pod状态,pod创建失败大多数pull image 可以手动拉取
kubectl get pods -A
查看pod错误信息
kubectl -n <namespace> describe pod <pod_name>

安装网络插件

如遇网络问题可以复制下来

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/2140ac876ef134e0ed5af15c65e414cf26827915/Documentation/kube-flannel.yml
查看节点状态,NoReady 变为 Ready
kubectl get node
Node节点加入集群

此命令在 master kubeamd init 成功后打印

kubeadm join 192.168.241.101:6443 --token 5stygn.lozz26nanhz3uu20 \
--discovery-token-ca-cert-hash sha256:58f544c5f67522fcfa7ce613a5a2948fd94d64ae7686937c8a44c9180b950261

加入成功后在 master 上运行 kubectl get node 查看节点状态。

初始化或加入集群失败,重置配置

kubeadm reset 
rm -rf $HOME/.kube/config

部署Dashboard

本例 k8s 是 v1.19.3,对应的 dashboard 是 v2.0.4 这个版本,
具体去这里查看对应的版本 https://github.com/kubernetes/dashboard/releases

手动拉取镜像,确定镜像能拉取成功。
可以替换其他仓库(阿里云<容器镜像服务>搜索用户公开镜像),同时修改 recommended.yaml kubernetesui镜像地址

wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.4/aio/deploy/recommended.yaml
docker pull kubernetesui/dashboard:v2.0.4
docker pull kubernetesui/metrics-scraper:v1.0.4

修改端口配置:

spec:
  type: NodePort
  ports:
    - port: 443
      targetPort: 8443
      nodePort: 30000
  selector:
    k8s-app: kubernetes-dashboard

部署

kubectl apply -f recommended.yaml

部署成功后,生成登录token

touch dashboard-account.yaml
cat >> dashboard-account.yaml << EOF
apiVersion: v1
kind: ServiceAccount
metadata:
  name: dashboard-admin
  namespace: kubernetes-dashboard

---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: dashboard-admin
subjects:
- kind: ServiceAccount
  name: dashboard-admin
  namespace: kubernetes-dashboard
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
EOF
部署
kubectl apply -f dashboard-account.yaml
查看token
kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')

FAQ:

1.重置并删除网络(不确定是否有效):
kubeadm reset
rm -rf $HOME/.kube/config
systemctl stop kubelet
systemctl stop docker
rm -rf /var/lib/cni/
rm -rf /var/lib/kubelet/*
rm -rf /etc/cni/
ifconfig cni0 down
ifconfig flannel.1 down
ifconfig docker0 down
ip link delete cni0
ip link delete flannel.1
systemctl start docker
systemctl restart kubelet
2.忘记加入集群的token:
kubeadm token create    #重新生成token
#列出token
kubeadm token list  | awk -F" " '{print $1}' |tail -n 1
#获取CA公钥的哈希值
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed  's/^ .* //'
kubeadm join 192.168.241.101:6443 --token token填这里   --discovery-token-ca-cert-hash sha256:哈希值填这里
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值