kubeadm安装单master节点k8s集群(容器运行时docker)

kubeadm安装单节点k8s

设置节点名称(重新登录查看)

hostnamectl set-hostname master

vim /etc/hosts
尾部追加ip与节点名对应关系

关闭selinux

setenforce 0
sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config

关闭防火墙

systemctl stop firewalld && systemctl disable firewalld

设置iptables规则

iptables -F && iptables -X && iptables -F -t nat && iptables -X -t nat && iptables -P FORWARD ACCEPT

关闭swap

swapoff -a && free –h

同步服务器时间

yum install chrony -y
systemctl enable chronyd
systemctl start chronyd
chronyc sources

制作配置文件

cat > /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_nonlocal_bind = 1
net.ipv4.ip_forward = 1
vm.swappiness = 0
vm.overcommit_memory = 1
EOF

生效文件

modprobe br_netfilter
sysctl -p /etc/sysctl.d/k8s.conf

编辑daemon

mkdir /etc/docker
cat > /etc/docker/daemon.json <<EOF
{
 "exec-opts":["native.cgroupdriver=systemd"]
}
EOF

使用 Docker 仓库进行安装

yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

yum install docker-ce docker-ce-cli containerd.io -y
systemctl daemon-reload
systemctl enable docker && systemctl restart docker

使用 k8s 仓库进行安装

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=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 install kubelet kubeadm kubectl -y
systemctl daemon-reload
systemctl enable kubelet && systemctl start kubelet

kubeadm初始化

kubeadm config print init-defaults > /k8s/kubeadm.yaml

修改kubeadm.yaml文件

apiVersion: kubeadm.k8s.io/v1beta3
bootstrapTokens:
- groups:
  - system:bootstrappers:kubeadm:default-node-token
  token: abcdef.0123456789abcdef
  ttl: 24h0m0s
  usages:
  - signing
  - authentication
kind: InitConfiguration
localAPIEndpoint:
  advertiseAddress: 1.2.3.4 #修改ip(使用内网ip)
  bindPort: 6443
nodeRegistration:
  criSocket: /var/run/dockershim.sock
  imagePullPolicy: IfNotPresent
  name: node
  taints: null
---
apiServer:
  timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta3
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns: {}
etcd:
  local:
    dataDir: /var/lib/etcd
# imageRepository: k8s.gcr.io
imageRepository: registry.aliyuncs.com/google_containers    #改成阿里云镜像地址
kind: ClusterConfiguration
kubernetesVersion: 1.23.0
networking:
  dnsDomain: cluster.local
  podSubnet: 10.244.0.0/16  #Pod网段,flannel插件需要使用这个网段
  serviceSubnet: 10.96.0.0/12
scheduler: {}
kubeadm config images list --config /k8s/kubeadm.yaml
kubeadm config images pull --config /k8s/kubeadm.yaml
kubeadm init --config /k8s/kubeadm.yaml

使用kk8s前需要配置kubectl

echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
source ~/.bash_profile

安装网络插件flannel

wget https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml

kubectl apply -f kube-flannel.yml

查看集群状态

[root@master ~]# kubectl get node
NAME     STATUS   ROLES                  AGE     VERSION
master   Ready    control-plane,master   7m34s   v1.23.4
[root@master ~]# kubectl get all --all-namespaces
NAMESPACE     NAME                                 READY   STATUS    RESTARTS   AGE
kube-system   pod/coredns-6d8c4cb4d-52nqv          1/1     Running   0          7m27s
kube-system   pod/coredns-6d8c4cb4d-tbb8n          1/1     Running   0          7m27s
kube-system   pod/etcd-master                      1/1     Running   0          7m43s
kube-system   pod/kube-apiserver-master            1/1     Running   0          7m41s
kube-system   pod/kube-controller-manager-master   1/1     Running   0          7m41s
kube-system   pod/kube-flannel-ds-r888v            1/1     Running   0          2m45s
kube-system   pod/kube-proxy-jdfjv                 1/1     Running   0          7m27s
kube-system   pod/kube-scheduler-master            1/1     Running   0          7m41s

NAMESPACE     NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)                  AGE
default       service/kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP                  7m43s
kube-system   service/kube-dns     ClusterIP   10.96.0.10   <none>        53/UDP,53/TCP,9153/TCP   7m42s

NAMESPACE     NAME                             DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR            AGE
kube-system   daemonset.apps/kube-flannel-ds   1         1         1       1            1           <none>                   2m45s
kube-system   daemonset.apps/kube-proxy        1         1         1       1            1           kubernetes.io/os=linux   7m42s

NAMESPACE     NAME                      READY   UP-TO-DATE   AVAILABLE   AGE
kube-system   deployment.apps/coredns   2/2     2            2           7m42s

NAMESPACE     NAME                                DESIRED   CURRENT   READY   AGE
kube-system   replicaset.apps/coredns-6d8c4cb4d   2         2         2       7m27s

默认情况下,master节点不参与业务pod的调度,此时需要开启

kubectl taint node master node-role.kubernetes.io/master:NoSchedule //关闭,默认
kubectl taint node master node-role.kubernetes.io/master:NoSchedule- //开启

安装nginx

kubectl apply -f nginx-deployment.yaml
cat > nginx-deployment.yaml <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx
  name: nginx-deployment
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - image: nginx:1.14.0
        name: nginx
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: nginx
  name: nginx-svc
spec:
  type: NodePort
  ports:
  - port: 80
    name: nginx-svc80
    protocol: TCP
    targetPort: 80
    nodePort: 30080  
  selector:
    app: nginx
EOF

访问nginx

http://IP:nodePort
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值