centos7安装k8s

替换yum源

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo 
yum clean all 
yum makecache
yum -y update

安装docker

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo 

yum -y install docker-ce-19.03.8-3.el7
yum update xfsprogs -y


rm -rf /etc/docker/daemon.json 
vi /etc/docker/daemon.json 
{
    "exec-opts": ["native.cgroupdriver=systemd"],
    "registry-mirrors": [
        "https://1nj0zren.mirror.aliyuncs.com",
        "https://kfwkfulq.mirror.aliyuncs.com",
        "https://2lqq34jg.mirror.aliyuncs.com",
        "https://pee6w651.mirror.aliyuncs.com",
        "http://hub-mirror.c.163.com",
        "https://docker.mirrors.ustc.edu.cn",
        "http://f1361db2.m.daocloud.io",
        "https://registry.docker-cn.com"
    ]
}

重启
systemctl daemon-reload
systemctl restart docker

查看docker日志
dockerd

安装k8s

# 拉镜像
docker pull registry.aliyuncs.com/google_containers/kube-proxy:v1.19.0
docker pull registry.aliyuncs.com/google_containers/kube-apiserver:v1.19.0
docker pull registry.aliyuncs.com/google_containers/kube-controller-manager:v1.19.0
docker pull registry.aliyuncs.com/google_containers/kube-scheduler:v1.19.0
docker pull registry.aliyuncs.com/google_containers/etcd:3.4.9-1
docker pull registry.aliyuncs.com/google_containers/coredns:1.7.0
docker pull registry.aliyuncs.com/google_containers/pause:3.2


# 关闭防火墙
systemctl stop firewalld && systemctl disable firewalld

# 关闭 swap
swapoff -a && sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

# 关闭 selinux
setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

# 时间同步
yum -y install ntpdate
ntpdate time.windows.com
hwclock --systohc

# 将桥接的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  # 生效



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


yum remove -y  kubelet-1.19.0 kubeadm-1.19.0 kubectl-1.19.0
yum install -y kubelet-1.19.0 kubeadm-1.19.0 kubectl-1.19.0
systemctl enable kubelet

修改配置文件
/usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf
ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS  --feature-gates SupportPodPidsLimit=false --feature-gates SupportNodePidsLimit=false

systemctl daemon-reload
systemctl restart docker
systemctl restart kubelet


kubeadm init --kubernetes-version=1.19.0 \
--apiserver-advertise-address=$(ifconfig | grep eno -A 1 | grep inet | awk '{ print $2 }') \
--image-repository=registry.aliyuncs.com/google_containers \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16 \
--ignore-preflight-errors=all \
--v=5 

kubeadm join --token 7q9hvo.e65aim12as1a0v98 --discovery-token-ca-cert-hash sha256:76e68e8ac68af391e3f406a5ea451ea44b0f67a63ac44754a43f8e483d613e14  192.168.116.27:6443 
 --ignore-preflight-errors=all


安装flannel
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubectl apply -f kube-flannel.yml
kubectl get pods -n kube-system


去除污点
kubectl describe node localhost.localdomain | grep Taints
kubectl taint nodes localhost.localdomain node.kubernetes.io/not-ready:NoSchedule-


[root@localhost k8s]# kubectl get node
NAME                    STATUS   ROLES    AGE   VERSION
localhost.localdomain   Ready    master   49m   v1.19.0
[root@localhost k8s]# kubectl get po -A
NAMESPACE      NAME                                            READY   STATUS    RESTARTS   AGE
default        nginx1-6978dd5678-66wc7                         1/1     Running   0          15m
kube-flannel   kube-flannel-ds-rvdqq                           1/1     Running   1          29m
kube-system    coredns-6d56c8448f-mcbkv                        1/1     Running   0          28m
kube-system    coredns-6d56c8448f-z49bb                        1/1     Running   0          41m
kube-system    etcd-localhost.localdomain                      1/1     Running   1          41m
kube-system    kube-apiserver-localhost.localdomain            1/1     Running   2          41m
kube-system    kube-controller-manager-localhost.localdomain   1/1     Running   3          41m
kube-system    kube-proxy-jcbcq                                1/1     Running   1          41m
kube-system    kube-scheduler-localhost.localdomain            1/1     Running   3          41m
[root@localhost k8s]# 


grpc服务demo

// protoc --go_out=plugins=grpc:. demo.proto
syntax = "proto3";

package demo;
option go_package = "demo";

service demo {
  rpc hello(helloReq) returns(helloResp);
}

message helloReq {
	string req=1;
}
message helloResp {
	string msg=1;
}
package main

import (
	"context"
	"flag"
	"fmt"
	pb "gg/demo"
	"log"
	"net"
	"os"

	"google.golang.org/grpc"
	"google.golang.org/grpc/reflection"
)

type server struct {
}

var (
	listen = flag.String("listen", "listen", ":80")
)

func main() {

	flag.Parse()
	fmt.Println(os.Args)

	s := grpc.NewServer()
	pb.RegisterDemoServer(s, &server{})
	reflection.Register(s)

	l, err := net.Listen("tcp", *listen)
	if err != nil {
		log.Printf("Failed to listen %s, err %v", *listen, err)
		return
	}

	log.Println("server run")
	s.Serve(l)
}

func (s *server) Hello(ctx context.Context, in *pb.HelloReq) (*pb.HelloResp, error) {
	log.Printf("Hello req:%+v", in)

	return &pb.HelloResp{Msg: in.Req}, nil
}


编写dockerfile

FROM ubuntu
ADD ./main /
EXPOSE 80
EXPOSE 8078

打包生成镜像

docker build -t helloworld:1.0 .

deploy & svc

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: helloworld
  name: helloworld
spec:
  replicas: 1
  selector:
    matchLabels:
      app: helloworld
  template:
    metadata:
      labels:
        app: helloworld
    spec:
      containers:
      - image: helloworld:1.0
        imagePullPolicy: Never
        name: helloworld
        command:
        - /main
        - --listen=:80
apiVersion: v1
kind: Service
metadata:
  labels:
    app: helloworld
  name: helloworld
spec:
  selector:
    app: helloworld
  ports:
  - name: http-admin
    port: 8078
    protocol: TCP
    targetPort: 8078
  - name: grpc
    port: 80
    protocol: TCP
    targetPort: 80

测试

[root@localhost ~]# kubectl get svc
NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)           AGE
helloworld   ClusterIP   10.1.173.212   <none>        8078/TCP,80/TCP   58s
kubernetes   ClusterIP   10.1.0.1       <none>        443/TCP           4h42m
[root@localhost ~]# grpcurl --plaintext -d '{"req":"aa"}' 10.1.173.212:80 demo.demo.hello
{
  "msg": "aa"
}
[root@localhost ~]# kubectl get po
NAME                          READY   STATUS    RESTARTS   AGE
helloworld-6fcfff47d5-srdsr   1/1     Running   0          5m31s
nginx1-6978dd5678-66wc7       1/1     Running   1          4h2m
[root@localhost ~]# kubectl logs helloworld-6fcfff47d5-srdsr 
[/main --listen=:80]
2024/04/04 13:56:54 server run
2024/04/04 14:01:37 Hello req:req:"aa" 
2024/04/04 14:02:17 Hello req:req:"aa" 

相关推荐

  1. centos7安装k8s

    2024-04-06 08:06:05       30 阅读
  2. centos7单机安装docker和k8s

    2024-04-06 08:06:05       26 阅读
  3. K8S Centos7 安装 K8S 1.26单机版

    2024-04-06 08:06:05       33 阅读
  4. centos7.9安装k8s v1.28.4

    2024-04-06 08:06:05       40 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-06 08:06:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-06 08:06:05       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-06 08:06:05       82 阅读
  4. Python语言-面向对象

    2024-04-06 08:06:05       91 阅读

热门阅读

  1. Web Form

    2024-04-06 08:06:05       40 阅读
  2. spa、vue、elementUi

    2024-04-06 08:06:05       32 阅读
  3. Visual Studio 2022 配置及设置 One Dark Pro

    2024-04-06 08:06:05       32 阅读
  4. WebKit结构简介

    2024-04-06 08:06:05       42 阅读
  5. 自然语言处理——信息熵

    2024-04-06 08:06:05       35 阅读
  6. 设计模式(21):备忘录模式

    2024-04-06 08:06:05       43 阅读
  7. 鸿蒙系统前端:构建智能互联新时代的界面之美

    2024-04-06 08:06:05       36 阅读
  8. 数据库逆向生成文件之数据库连接报错解决方案

    2024-04-06 08:06:05       40 阅读
  9. Docker安装Memcached

    2024-04-06 08:06:05       39 阅读
  10. 手写一个民用Tomcat (01)

    2024-04-06 08:06:05       34 阅读
  11. 4月5日排序算法总结(1)

    2024-04-06 08:06:05       39 阅读